GitHubを使うなら最低限知っておきたい、プルリクエストの送り方とレビュー、マージの基本こっそり始めるGit/GitHub超入門(10)

本連載では、バージョン管理システム「Git」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説しています。今回は、ブランチ作成、README.mdファイルへの変更、GitHub上のリポジトリへの反映を行って、プルリクエストを作成し、レビューやマージを行う手順を紹介します。

» 2017年02月27日 05時00分 公開
[平屋真吾クラスメソッド]

 本連載「こっそり始める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」ボタンをクリックし、プルリクエスト作成ページへ移動します。

プルリクエスト作成ページの構成

 プルリクエスト作成ページを表示できました。ページの構成は以下のようになっています。

  1. ブランチ
  2. タイトル
  3. 概要
  4. 「Create pull request」ボタン
  5. コミットの履歴
  6. ファイルの差分

【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」タブ

 このタブを選択すると、ファイルの変更箇所を確認できます。

 プルリクエストをレビューする作業の解説は以上です。

プルリクエストをマージする

 誰がプルリクエストをマージするかは、開発チームのルールによります。

 筆者が所属するチームの場合、プルリクエストは以下のフローで行うことが多いです。

  1. 実装者(ファイルへの変更を行った人)がプルリクエストを作成する
  2. レビュー担当者(実装者以外)が変更内容をレビューする
  3. 必要に応じて実装者は修正を行う
  4. マージできる状態になったら、実装者が「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.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。