プル要求は、コードの変更をプロジェクトにマージするための提案です。 pull request は GitHubの主要な コラボレーション機能であり、変更をマージする前にディスカッションして確認できます。 これにより、チームは共同作業を行い、問題を早期にキャッチし、コードの品質を維持できます。
pull request を表示するpull request の操作
プル要求によって、コンテキストレビュー担当者が変更を理解するために必要な情報がまとめられます。 このコンテキストは、次のタブに編成されます。
- [ 会話 ] タブには、説明、タイムライン、コメント、レビューが表示されます。
- [ コミット ] タブには、pull request ブランチが時間の経過とどのように変化したかが表示されます。
- [ チェック ] タブには、自動テスト、ビルド、およびその他の検証が表示されます。
- [ 変更されたファイル ] タブには、レビュー担当者が提案された変更を理解するために使用する差分が表示されます。
- [ 結果 ] タブには、提案された変更に対するコード スキャン アラートなどの自動コード レビュー結果が表示されます。
タブとは別に、マージ ステータス では、マージ前のブロッカー、承認不足、その他の要件が強調表示されます。 pull request ヘッダーとマージ ボックスに表示されます。
これらのビューは、作成者と校閲者が変更について話し合い、フィードバックを追跡し、pull request をマージする準備ができているタイミングを決定するのに役立ちます。
ドラフト プル リクエスト
pull request を作成するときに、それを下書きプル要求にすることを選択できます。 下書きプル要求はマージできず、コード所有者はそれらを確認するように自動的に要求されません。 下書きは、レビューを正式に要求せずに進行中の作業を共有する場合に便利です。
プルリクエストに対するフィードバックをもらう準備ができているなら、ドラフトのプルリクエストにレビューの準備ができているとマークできます。 プルリクエストにレビューの準備ができているとマークすると、コードオーナーたちからのレビューをリクエストすることになります。 pull request は、いつでも下書きに変換できます。 「プルリクエストのステージの変更」を参照してください。
プル要求の参照とマージ ブランチ
pull request を開くと、 GitHub は、プル要求のヘッド ブランチを指し、可能な場合はシミュレートされたマージ結果を指す一時的な Git 参照を作成します。 これらの ref は、ベースブランチを変更せずに、GitHub とインテグレーションがプルリクエストを評価するのに役立ちます。
ほとんどのコントリビューターにとって、これらの ref は普段は意識されません。 これらは、自動化の構築、CI 動作のデバッグ、またはプル要求の状態をローカルでフェッチする場合に最も重要です。 マージ ブランチ GitHub Actions 使用方法については、「 ワークフローをトリガーするイベント」を参照してください。
比較とプルリクエストページのコミットの違い
ページとプル要求ページを比較すると、異なるマージ ベースから変更されたファイルを計算できます。 その結果、同じブランチであっても、場所によって異なる差分が表示される場合があります。
これは通常、プル要求の作成後にベース ブランチが変更された場合に重要です。 プル要求ページはプル要求によって導入されたものに焦点を当て、比較ページは 2 つの ref 間の現在の比較を反映します。
コラボレーション開発モデル
プルリクエストの使い方は、プロジェクトで使う開発モデルのタイプによります。 フォークおよびプル モデルまたは共有リポジトリ モデルを使用できます。
フォークとプルモデル
フォークとプルモデルでは、既存の(「upstream」)リポジトリに対する読み取りアクセス権があり、かつそのアップストリーム リポジトリの所有者が許可していれば、誰でもそのリポジトリをフォークできます。 フォークとそのアップストリームは同じ Git データを共有することに注意してください。 つまり、フォークにアップロードされたすべてのコンテンツは、アップストリームとそのアップストリームの他のすべてのフォークからアクセスできます。
作成したフォークにプッシュするためにアップストリーム リポジトリからのアクセス許可は必要ありません。 オプションで、アップストリーム リポジトリにプッシュ アクセスを持つすべてのユーザーが pull request ブランチに変更を加えることを許可できます。 このモデルは、新しい共同作成者の摩擦を減らし、事前の調整なしで独立して作業できるため、オープンソース プロジェクトで人気があります。
ヒント
オープン ソースに関する詳しい情報、特にオープン ソース プロジェクトの立ち上げと成長させる方法について、健全なオープン ソース コミュニティの育成を支援する「オープン ソース ガイド」を作成しました。オープン ソース コミュニティの維持に関する無料の GitHub Skills コースを受講することもできます。
共有リポジトリ モデル
共有リポジトリ モデルでは、コラボレーターは 1 つの共有リポジトリへのプッシュ アクセス権を持ち、変更が必要なときにトピック ブランチを作成します。 プル要求は、変更がメイン開発ブランチにマージされる前にコード レビューと一連の変更に関する一般的なディスカッションを開始するため、このモデルで役立ちます。 このモデルは、プライベート プロジェクトで共同作業を行う小規模なチームや組織でより一般的です。