プルリクエストの流れ
- フォーク
- クローン
- ブランチ作成
- コミット
- プッシュ
- プルリクエスト
プルリクエストを利用した共同開発の方法についてご紹介します。
はい、ではGitを使ってですね、プルリクエストを使い、共同開発をするという事を一緒にやっていきましょう。画面を共有します。
はい、急にね、リモートリポジトリとローカルリポジトリの説明から飛ぶんですけども、このぐらいひとっ飛びでやらないと、その一通りの動きが理解できないので、まずはその概要を全部ご紹介して、プルリクエストが終わるところまでをご紹介し、それをステップ、ステップに分けて作業していくということで、ご説明していきたいと思います。
プルリクエストを利用した共同開発には合計6つの行動があるかなと思ってまとめました。フォークして、クローンして、ブランチを作成し、その中でコミットして、プッシュして、プルリクエストするという、この6つの行程になります。「ええぇ~…(困惑)」っていう感じですね(笑)。
6つとも、なんか名前も慣れてないですし、何の事?みたいな話も出てきました。「フォーク?(手振りではフォークボールの握り方)」みたいな。「フォーク?(手振りでは食器のフォーク)」みたいな感じがしますけども(笑)、ざっくりと、まずは絵でご紹介したいと思います。絵を作りましたよ!
フォーク
はい、こちらご覧ください。
えーとですね、 GitHub。ここの黄色の部分は GitHub 内です。リポジトリ、リモートのリポジトリですね。そこに元々あるリポジトリがあります。誰かしらが作っていて、このプロジェクトでは、例えば3つのコミットがある状態ということですね。
これは、そもそも、例えばオープンソースであれば、そうですね WordPress のエディターであるとか、もしくは PHP とか jQuery とか、最近流行りの JavaScript の何かとか、本当に多くのものが GitHub 上で開発されてるんですけども、その、この開発の途中のリポジトリに、いきなり自分がコミットすることはできません。それはそうですよね。
あの、自分がいきなり、そうですねぇ…なんかこう、今まで達人のプログラマーの人たちがたくさんやってきた Git に急に入って、急にコミットして、全部が潰れちゃったみたいな事になるのはおかしな話ですからね。そういう事ができないように、元々のリポジトリには基本的には触れないようになってます。まずここからスタート。
でも、最終的に、そこに何かしら影響を与えたいと言うか、コミットを追加したいということでプルリクエストを送るんですけども、まずはその元々あるリポジトリを、自分の所のリポジトリにするために、このようにします。
他人のものだったリポジトリを GitHub 内で、自分のアカウントでコピーする、この事をフォークと言います。こっちはもともと他の人が作ってたアカウントでのリポジトリ。このリポジトリを丸まま GitHub の中でコピーして、要はクラウド上ですね、コピーして自分で管理できるリポジトリにすると。これをフォークという風に言います。後でやるんで、なんとなくで覚えといてください。この、まず「他人のアカウントから自分のアカウントで操作できるようになるよ」ということがフォークです。はい。「自分のアカウントにする」ですね。そして、自分のアカウントにコピーするからこういう感じですね。
クローン
それを今度クローンします。クローンは、自分の、今度はパソコンの中にダウンロードしてくる、変更の履歴ごとダウンロードしてくるのがクローンですね。
これは、ここ(黄色いエリア)は GitHub でリモートリポジトリ。そこから、自分のパソコンであるローカルリポジトリにダウンロードした、その時に変更の履歴も全て込みでってことで、クローンということになります。
ローカルリポジトリでブランチ作成、コミット、プッシュ
はい、クローンをしました。クローンしたところでコミットを追加します。基本的には、ここで、新たなブランチを作る方がいいですね。ここについては、ちょっと深くはご紹介しないんですけども、また後ほど別途ご紹介するとして、こういうものだと思ってください。
元々あるクローンしたものに新たなブランチを作って、そこで新しいコミット行います、ということで、今、こちらの GitHub 上にあるものよりは、自分で追加したオリジナルのコミットが一つ増えた状態ということになります。大丈夫ですか?
元々ある他人の物からフォークして、 GitHub 上でフォークして、自分のリポジトリになりました。そこからクローンして自分のパソコンの中に行ってきました。その自分のパソコンの中でブランチを新しく作って、新しいコミットをしました…というとこまでです、はい。
で、コミットが出来たら、今度はそれをプッシュします。プッシュっていうのは、変更の履歴込みでファイルをアップロードすることですね。
この時には、もう、フォークしたリポジトリは自分のリポジトリなので、好きなようにコミットを追加したりすることが可能です。なのでプッシュします、ということで「自分の GitHub 上のリポジトリには、ちゃんと新しいコミットが一個追加されて、新しいブランチが出来上がってる」ということになりますね。
で、この、ここですね。このタイミングで新しいブランチ作ってますから、これでプッシュするとですね、ここにも、(GitHub側の)リポジトリにも新しいブランチが出来上がります。「自動的にできる」ですね。
ここは、もう、このローカルで新しいブランチを作ったので、それをプッシュすると自動的に GitHub 上には新しいブランチとして、新しいコミットが追加されます。これもプッシュな役割ですね。
プルリクエスト
で、いよいよここの本体にも「このコミットを取り込んで欲しいよ」という時に行うのがプルリクエストということになります。
これは、今、見ていただくと分かりますけども、この GitHub 上での機能ということになります。「このコミットを、本体さんどうか受け入れてくださいね」ということでお願いするのがプルリクエストという内容になります。
このプルリクエストと、あと一番最初の方に行ったこのフォークは GitHub 上だけで行いましたよね。GitHub の誰かのリポジトリから自分のリポジトリにコピーする。そして、こちら側では自分のリポジトリから、元のリポジトリに対してプルリクエストをお願いしてお送りする、と言う内容になります。
この2つは GitHub についている機能で、Git 自体についてる機能とはまた異なります。この「Gitの機能なのか、 GitHub の機能なのか?」において操作する画面が変わりますね。当然 GitHub の機能はウェブサイトとしても GitHub 上で作業を行いますし、Git の機能の場合はローカルのパソコンの中で作業を行う、ということになります。
この辺り「ソースコードを触るんだったっけ? GitHub を触るんだっけ?コミットってSourceTreeでやるんだっけ?」みたいなことが、色々相当ごっちゃになると思うんですけども、まずはこの流れだけ覚えていただいて、一個ずつ詰めていただければと思います。
そして、途中で流れが分からなくなったらまたこの動画に戻って来て頂いてですね、今度の流れのどこの部分をやってるんだっけっていうの確認しながら、プルリクエストを出す、というところまで行ってみていただければと思います。
この後、実践としてですね、実際にある GitHub 上にデモのリポジトリ作りましたから、そこからご自身でフォークしていただいて、クローンして、新しいコミットして、プッシュして、プルリクエストする、この流れを皆さんもやって頂きたいと思います。