GitHubを使うなら最低限知っておきたい、プルリクエストの送り方とレビュー、マージの基本:こっそり始めるGit/GitHub超入門(10)
本連載では、バージョン管理システム「Git」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説しています。今回は、ブランチ作成、README.mdファイルへの変更、GitHub上のリポジトリへの反映を行って、プルリクエストを作成し、レビューやマージを行う手順を紹介します。
本連載「こっそり始めるGit/GitHub超入門」では、バージョン管理システム「Git」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説していきます。具体的な操作を交えながら解説していきますので、本連載を最後まで読み終える頃には、GitやGitHubの基本的な操作が身に付いた状態になっていると思います。
前回の記事「これでもう怖くない、Git/GitHubにおけるリモートリポジトリの作成、確認、変更、更新時の基本5コマンド」では「リモートリポジトリ」に対する基本操作を解説しました。
連載第10回目の本稿では「プルリクエスト」の基本機能や手順について解説します。
本稿で解説する作業は、前回の記事で作成したリポジトリをベースに進めていきます。リポジトリを作成する作業をまだ行っていない場合は、前回の記事を読みながら準備を進めてみてください。
プルリクエスト作成の準備
ブランチ作成、README.mdファイルへの変更、GitHub上のリポジトリへの反映を行って、プルリクエストを作成する準備を行います。
ブランチ作成
前回の記事で作成したリポジトリへ移動します。
$ cd /Users/hirayashingo/Documents/hello-git-9/hello-github $ pwd /Users/hirayashingo/Documents/hello-git-9/hello-github
プルリクエスト用のブランチ「edit-readme」を作成し、このブランチに切り替えます。
$ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean $ git checkout -b edit-readme
カレントブランチが「edit-readme」ブランチになりました。
$ git status On branch edit-readme nothing to commit, working tree clean
README.mdファイルへの変更
「README.md」ファイルに1行追加し、git addコマンドでステージ、「git commit -m」コマンドでコミットします。
$ echo "Git連載記事の作業用のリポジトリです。" >> README.md $ cat README.md # hello-github GitHubの機能を試すためのリポジトリです。 Git連載記事の作業用のリポジトリです。 $ git add README.md $ git commit -m "リポジトリの説明をさらに追加" [edit-readme 149d3a6] リポジトリの説明をさらに追加 1 file changed, 1 insertion(+)
GitHub上のリポジトリへの反映
git pushコマンドでリモートリポジトリへ反映します。以下のコマンドを実行すると、今回行った変更がリモートリポジトリ「origin」の「edit-readme」ブランチに反映されます。
$ git push origin edit-readme Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 402 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To github.com:username/hello-github.git * [new branch] edit-readme -> edit-readme
これでプルリクエストを作成する準備が整いました。
プルリクエストを作成する
ここでGitHub上のリポジトリページを表示してみましょう。以下のような表示になっているかと思います。
「Your recently pushed branches:」という表示は、メインのブランチ(今回の場合はmaster)以外のブランチがpushされた場合、しばらくの間表示されます。
「Compare & pull request」ボタンをクリックし、プルリクエスト作成ページへ移動します。
プルリクエスト作成ページの構成
プルリクエスト作成ページを表示できました。ページの構成は以下のようになっています。
- ブランチ
- タイトル
- 概要
- 「Create pull request」ボタン
- コミットの履歴
- ファイルの差分
【1】ブランチ
「マージ先ブランチ」と「プルリクエスト対象ブランチ」がここに表示されます。
今回の場合、これから作成するプルリクエストが承認されると、「edit-readme」ブランチの内容が「master」ブランチへマージされることになります。
【2】タイトル
プルリクエストのタイトルをここに入力します。
今回のようにプルリクエストの対象となるコミットが1つだけの場合、タイトルの初期値はコミットコメントになります。
【3】概要
変更内容、関連するイシューや資料へのリンクなど、レビュー担当者(プルリクエストを確認する人)へ伝えておきたいことをここに書きます。
Markdown形式で記述すれば、文章を構造化することができます。
【4】「Create pull request」ボタン
このボタンを押すとプルリクエストが作成されます。
【5】コミットの履歴
プルリクエストの対象となるコミットがここに表示されます。
【6】ファイルの差分
ファイルの変更箇所が、ここに表示されます。README.mdファイルに1行追加したことがよく分かるかと思います。
見出しとリスト項目1件をMarkdown形式で記入してプルリクエストを作成
今回は以下のように、見出しとリスト項目1件をMarkdown形式で記入しました。
「Preview」をクリックすると、どのように描画されるかを確認できます。
「Create pull request」ボタンクリックしてプルリクエストを作成します。
プルリクエストの作成が完了しました。作成したプルリクエストのページが表示されます。
プルリクエストを作成する作業の解説は以上です。
プルリクエストをレビューする
プルリクエストをレビューする人の視点からプルリクエストのページを見ていきます。
「Conversation」タブでレビューを行う
まずは、デフォルトで表示される「Conversation」タブの内容を解説していきます。
ページの構成は以下のようになっています。
【1】タイトル
プルリクエストのタイトルが1番上に表示されます。変更の内容がすぐに理解できるタイトルだとうれしいですね。
【2】ブランチ
ここを見ると、どのブランチからどのブランチへマージされるのかが分かります。
【3】タブ
デフォルトで「Conversation」タブが選択されています。「Commits」と「Files changed」タブについては後ほど解説します。
【4】概要
ここを見ると、より詳しいプルリクエストの情報を知ることができます。
【5】各種ログ
ここを見ると、プルリクエストに関連する各種ログを確認できます。今回の場合は、コミット1件のログだけ表示されています。
【6】「Merge pull request」ボタン
このボタンを押すとマージが実行されます。今回の場合は、「edit-readme」ブランチの内容が「master」ブランチへマージされます。
【7】コメント欄
ここのテキストボックスにコメントを記入し、「Comment」ボタンをクリックするとコメントを追加できます。プルリクエスト作成時の「概要」と同様に、Markdown形式で記述できます。
コメント機能は、プルリクエストに関わる人同士のさまざまなコミュニケーションのために使用できます。例えば以下のようなコメントを書き込むことができます。
- レビュー担当者が、実装者に対して、修正してほしいことを書き込む
- 実装者が、レビュー担当者に対して、修正したことを伝えるコメントを書き込む
- レビュー担当者が、実装者に対して、マージしても問題ないことを書き込む
プルリクエストの対象となるコミットの一覧「Commits」タブ
このタブを選択すると、プルリクエストの対象となるコミットの一覧を表示できます。
ファイルの変更箇所を確認できる「Files changed」タブ
このタブを選択すると、ファイルの変更箇所を確認できます。
プルリクエストをレビューする作業の解説は以上です。
プルリクエストをマージする
誰がプルリクエストをマージするかは、開発チームのルールによります。
筆者が所属するチームの場合、プルリクエストは以下のフローで行うことが多いです。
- 実装者(ファイルへの変更を行った人)がプルリクエストを作成する
- レビュー担当者(実装者以外)が変更内容をレビューする
- 必要に応じて実装者は修正を行う
- マージできる状態になったら、実装者が「Merge pull request」ボタンを押してマージを行う
今回は1人チームなので、自分でマージしてしまいましょう。「Merge pull request」ボタンをクリックしてください。
マージ確認状態になります。マージして問題なければ「Confirm merge」をクリックします。
マージが完了しました。
「Delete branch」をクリックすると、プルリクエストに使用した「edit-rename」ブランチを削除できます。このブランチはもう不要なので「Delete branch」をクリックしてブランチを削除します。
ブランチの削除が完了しました。
プルリクエストをマージする作業の解説は以上です。
次回は「GitHub Issues(イシュー)」について
本稿では「プルリクエスト」の基本機能やフローを解説しました。今回扱うことができなかったプルリクエストの他の機能などは、また別の機会に紹介する予定です。
次回は「GitHub Issues(イシュー)」を解説する予定です。お楽しみに!
参考
- 『Pro Git』(written by Scott Chacon and Ben Straub and published by Apress)
著者紹介
平屋真吾
クラスメソッド株式会社 iPhoneアプリサービス事業部所属のプログラマーです。iOSアプリの開発がメインですが、デザインやAWSなども勉強中です。
ブログ:http://dev.classmethod.jp/author/hiraya-shingo/
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
GitHub(ギットハブ)の使い方:グループの作成編
ソフトウェア開発プロジェクトの共有Webサービス「GitHub(ギットハブ)」を「日本語で」分かりやすく説明するシリーズ、今回はグループの作成と設定を解説します。プルリクエスト/レビューを取り込んだ、よりシンプルなGitHub Flowの運用を図解する
数回にわたってgit-flowとGitHub Flowを使ったGitの活用テクニックを紹介します。最終回は、GitHubが採用している、git-flowよりシンプルな構成のブランチ管理フローについてです。5つの運用ルールや開発の流れを図を交えて解説します。GitHubをもっとソーシャルに使いこなすための7つ道具
「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします(編集部)