【GitHub基礎】いきなりmainにマージしない! PRを挟むことで防げるミスとトラブル

修正用ブランチでREADMEを直し、GitHubへpushできた。次は、その変更をmainへ取り込みたい。でも、取り込む前にほかの人にも確認してほしい。

そんなときに使うのが、Pull Requestです。変更の目的と差分をまとめて提示し、コメントやレビューを通じて、取り込んでよいかを判断します。

この記事では、前回までのブランチ・差分・push・マージの知識をつなぎ、変更の提案からレビュー、修正、マージまでを説明します。READMEの修正は説明用の例です。GitHub公式資料に基づく入門記事として整理しました。

目次

1. Pull Requestは、変更を取り込むための提案

Pull Requestは「このブランチの変更を、こちらのブランチへ取り込みたい」という提案です。よく「PR」と略されます。

GitHubでは、PRに変更の説明、コミット、差分、コメント、チェック結果などを集められます。変更を取り込む前に、内容を共有して話し合う場所になります。GitHub公式:Pull Requestについて

前回の記事のgit pullとは別のものです。git pullは手元へ履歴を取得して取り込むコマンドで、Pull RequestはGitHub上で変更を提案する仕組みです。

項目 意味
git pull 手元へ履歴を取得して取り込むコマンド
Pull Request GitHub上で変更を提案する仕組み

PRを作成しただけでは、取り込み先のブランチへ変更は反映されません。実際に取り込む操作がマージです。

2. 変更を作る人と、確認する人の流れ

作業を、次のように分けて考えると理解しやすくなります。

段階 変更を作る人 確認する人
準備 ブランチで編集し、確認・コミット・pushする 必要なら事前に方針を相談する
提案 PRに目的、変更内容、確認結果を書く 説明と差分を読む
レビュー 質問に答え、必要な修正を行う 気になる箇所へコメントし、判断を伝える
再確認 修正を同じブランチへpushする 更新された差分を確認する
取り込み 条件を確認してマージする チームで決めた条件の充足を確認する

これは、この記事で使う一般的な作業例です。誰がマージするか、何人の承認が必要かは、チームとリポジトリの運用によって異なります。

レビューは、コードの書き方を指摘するだけではありません。変更の目的、利用者への影響、抜けたケース、確認した内容などを、差分と合わせて見ます。READMEや記事原稿の変更も、PRで確認できます。

変更の提案からレビュー・修正・取り込みまで
作成者:ブランチで編集・確認・コミット・push変更を提案
→
作成者:PRに目的・変更内容・確認結果を書く
作成者:PRに目的・変更内容・確認結果を書く確認を受ける
→
確認者:説明と差分を読み、コメントと判断を伝える
確認者:説明と差分を読み、コメントと判断を伝える修正が必要な場合
→
作成者:質問に答え、必要な修正を同じブランチへpush
作成者:質問に答え、必要な修正を同じブランチへpush修正箇所を伝え、再確認を依頼
→
確認者:更新された差分を再確認
確認者:更新された差分を再確認さらに修正が必要な場合
→
作成者:質問に答え、必要な修正を同じブランチへpush
確認者:説明と差分を読み、コメントと判断を伝える必要なレビューと修正が完了
→
チームで決めた取り込み条件を確認
確認者:更新された差分を再確認必要なレビューと修正が完了
→
チームで決めた取り込み条件を確認
チームで決めた取り込み条件を確認条件の充足を確認
→
条件を満たしたらマージ

3. baseとcompareを確認して、PRを作る

ここからは、共有リポジトリへ修正用ブランチをpushする権限があり、feature/readme-guideをGitHubへ送信済みの例です。

READMEに「原稿はarticlesフォルダーに保存します」という説明を追加し、mainへ取り込みたいものとします。

GitHubでリポジトリを開き、修正用ブランチを選びます。案内が表示されていれば「Compare & pull request」から作成できます。案内がない場合は、Pull requestsの画面から新しいPRを作り、比較するブランチを選びます。

項目 この例で選ぶもの 意味
base main 変更を取り込む先
compare feature/readme-guide 変更を提案する側

タイトルと説明を入力する前に、方向と差分を確認します。関係のないファイルやコミットが含まれていたら、原因を確認してから進めます。GitHub公式:Pull Requestの作成

取り込み先と変更側を逆にすると、別の提案になります。「どちらへ何を取り込むのか」を言葉にして確認しましょう。

権限がないリポジトリでは、forkした自分のリポジトリからPRを提案する方法もあります。今回は、同じ共有リポジトリのブランチ同士を対象にします。

compareからbaseへ変更を提案する
  1. compare:feature/readme-guide(変更を提案する側)
    READMEの変更を提示 ↓
  2. Pull Request:方向と差分を確認して変更を提案
    マージすると変更が反映される ↓
  3. base:main(変更を取り込む先)

4. レビューしやすい説明を書く

差分だけでは「なぜ変えたのか」が伝わりません。PRの説明には、変更の目的、何を変えたか、どう確認したかを書くと、確認する人が判断しやすくなります。

次は、README修正の説明例です。「確認したこと」の内容は、実際に行った確認だけを書いてください。

タイトル:READMEに記事原稿の保存場所を追加

## 変更の目的
初めて作業する人が、原稿を置く場所を判断できるようにします。

## 変更したこと
READMEに、記事原稿はarticlesフォルダーへ保存する説明を追加しました。

## 確認したこと
- 実際のフォルダー名と説明が一致することを確認しました。
- READMEの前後の説明を読み、矛盾がないことを確認しました。

## 見てほしいこと
初めて作業する人にも、保存場所が伝わるかを確認してください。

プログラムの修正なら、再現条件、修正後の動作、実行したテスト、確認できていない範囲なども、必要に応じて添えます。

まだ作業途中の変更を共有したい場合は、DraftのPRを使えます。Draftはそのままではマージできず、レビュー可能な状態になったら「Ready for review」へ切り替えます。GitHub公式:DraftのPull Request

5. コードレビューでは、差分と目的を照らし合わせる

レビューする側は、最初に説明を読み、変更の目的をつかみます。それから「Files changed」でファイルごとの差分を確認します。GitHubでは、行に対応したコメントや、修正案を付けられます。GitHub公式:変更内容のレビュー

この記事のREADME修正なら、次の点が確認対象になります。

  1. 実際のフォルダー名と説明が一致しているか。
  2. 原稿以外のファイルの保存先と混同しないか。
  3. 周囲の文章と矛盾していないか。
  4. 今回の目的に関係のない変更が入っていないか。

プログラムなら、異常時の動作、入力条件、影響する機能、テストの内容なども確認します。自動チェックの成功と、人が変更の目的や使われ方を確認することは、それぞれ役割があります。

コメントは、気になる箇所と理由を具体的に書くと伝わりやすくなります。たとえば、説明用のコメントなら次のようにできます。

この説明だと、画像もarticlesへ置くように読めそうです。原稿の保存先だとわかるように、「記事原稿」と書くのはどうでしょうか。

修正が必要な指摘なのか、質問なのか、任意の提案なのかも示すと、作成者が対応を判断しやすくなります。人ではなく、変更の内容と理由について話し合いましょう。

6. Comment・Approve・Request changesの違い

GitHubのレビューには、次の3種類の判断があります。

判断 意味
Comment コメントを伝える。承認や変更要求の判断は付けない
Approve この変更を承認する
Request changes 取り込む前に変更を求める

まとめてレビューする場合、行へのコメントを下書きとしてため、最後にレビューを送信します。保留中のレビューコメントは、送信するまで他の人へ伝わりません。書き終えたら、送信まで完了したかを確認しましょう。GitHub公式:Pull Requestレビュー

作成者は、指摘の理由を読み、必要な修正をコミットして同じブランチへpushします。元のPRには、そのブランチへ追加した変更が反映されます。通常、指摘を直すたびに別のPRを作り直す必要はありません。GitHub公式:作成したPRの変更

修正した箇所を伝え、再確認を依頼します。コメントのやり取りを「解決済み」にすることと、レビューの承認を得ることは同じではありません。コメントを閉じる運用も、チームで合わせておきましょう。

7. 承認されたら、条件を確認してマージする

Approveが付いたからといって、必ずすぐマージできるわけではありません。リポジトリには、必要な承認数、指定のレビュー担当、チェックの成功、会話の解決などの条件を設定できます。追加のコミットによって承認の扱いが変わる設定もあります。GitHub公式:保護されたブランチ

最後に、次を確認します。

  1. 取り込み先と、最新の変更内容が合っているか。
  2. 必要なレビューと修正が終わっているか。
  3. 設定されたチェックが成功しているか。
  4. 競合など、マージを妨げる状態がないか。
  5. マージ担当者や取り込み方法が、チームのルールに合っているか。

GitHubでは、通常のマージ、Squash、Rebaseなど、リポジトリで許可された方法を選べる場合があります。方法によってコミット履歴の残り方が変わるため、チームの方針に従います。GitHub公式:Pull Requestのマージ

マージ後は、GitHub側の取り込み先が更新されます。手元のmainを更新するには、前回のpullの記事のように、現在の作業状態を確認して取り込みます。

Webサイトの公開や本番環境への反映が始まるかどうかは、接続された処理と運用によります。PRのマージ、手元への取り込み、本番への公開を分けて考えましょう。

承認後の条件確認と、マージ後の反映先
Approve:変更の承認承認だけで即マージできるとは限らない
→
取り込み先・最新差分・レビュー・修正・チェック・競合・チームのルールを確認
取り込み先・最新差分・レビュー・修正・チェック・競合・チームのルールを確認必要な条件を満たす
→
許可された方法とチームの方針に従ってマージ
許可された方法とチームの方針に従ってマージ取り込み先へ反映
→
GitHub側の取り込み先が更新
GitHub側の取り込み先が更新手元への取り込みは別の操作
→
手元のmain:現在の作業状態を確認して取り込む
許可された方法とチームの方針に従ってマージ公開・本番反映が始まるかは運用次第
→
Webサイトの公開・本番反映:接続された処理と運用による

8. まとめと理解度確認

Pull Requestは、変更の目的と差分を共有し、レビューを受けてから取り込むための提案です。レビューでは、変更の意図と最終的な内容を確認し、必要なら修正と再確認を行います。

作成者は、相手が判断できる説明と確認結果を用意します。レビューする側は、具体的な箇所と理由を伝えます。最後に条件を確認してマージする、という流れで進めましょう。

自分の言葉で説明してみる

  1. Pull Requestとgit pullは、同じ操作ですか?
  2. PRのbaseとcompareは、それぞれ何を指定しますか?
  3. PRに差分だけでなく、目的と確認結果を書くのはなぜですか?
  4. レビューのApproveが付けば、必ずすぐマージできますか?
  5. 指摘された修正を同じブランチへpushすると、元のPRはどうなりますか?

解答例

  1. 違います。PRは変更の提案、git pullは手元への取得と取り込みのコマンドです。
  2. baseは取り込み先、compareは変更を提案する側です。
  3. 確認する人が、変更の理由と、どこまで確かめたかを判断できるようにするためです。
  4. 必ずではありません。必要な承認数、チェック、競合、権限などの条件も確認します。
  5. 追加した変更が元のPRへ反映されます。修正内容を伝え、必要な再確認を受けます。

参考資料

資料確認日:2026年10月11日

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次