# Pull Request

pull request を使用してコードの変更を提案、レビュー、マージし、効果的に共同作業を行い、コードの品質を維持します。

プル要求は、コードの変更をプロジェクトにマージするための提案です。 pull request は GitHubの主要な **コラボレーション機能**であり、変更をマージする前にディスカッションして確認できます。 これにより、チームは共同作業を行い、問題を早期にキャッチし、コードの品質を維持できます。

<a href="https://github.com/pulls?ref_product=github&ref_type=engagement&ref_style=button" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline">
<span>pull request を表示する</span><svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-label="link external icon" role="img"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a>

## pull request の操作

プル要求によって、コンテキストレビュー担当者が変更を理解するために必要な情報がまとめられます。 このコンテキストは、次のタブに編成されます。

* \[ **会話** ] タブには、説明、タイムライン、コメント、レビューが表示されます。
* \[ **コミット** ] タブには、pull request ブランチが時間の経過とどのように変化したかが表示されます。
* \[ **チェック** ] タブには、自動テスト、ビルド、およびその他の検証が表示されます。
* \[ **変更されたファイル** ] タブには、レビュー担当者が提案された変更を理解するために使用する差分が表示されます。
* \[ **結果** ] タブには、提案された変更に対するコード スキャン アラートなどの自動コード レビュー結果が表示されます。

タブとは別に、**マージ ステータス** では、マージ前のブロッカー、承認不足、その他の要件が強調表示されます。 pull request ヘッダーとマージ ボックスに表示されます。

これらのビューは、作成者と校閲者が変更について話し合い、フィードバックを追跡し、pull request をマージする準備ができているタイミングを決定するのに役立ちます。

## 下書きプルリクエスト

pull request を作成するときに、それを下書きプル要求にすることを選択できます。 下書きプル要求はマージできず、コード所有者はそれらを確認するように自動的に要求されません。 下書きは、レビューを正式に要求せずに進行中の作業を共有する場合に便利です。

プルリクエストに対するフィードバックをもらう準備ができているなら、ドラフトのプルリクエストにレビューの準備ができているとマークできます。 プルリクエストにレビューの準備ができているとマークすると、コードオーナーたちからのレビューをリクエストすることになります。 pull request は、いつでも下書きに変換できます。 「[プルリクエストのステージの変更](/ja/enterprise-server@3.21/pull-requests/how-tos/create-pull-requests/changing-the-stage-of-a-pull-request)」を参照してください。

## プル要求の参照とマージ ブランチ

pull request を開くと、 GitHub は、プル要求のヘッド ブランチを指し、可能な場合はシミュレートされたマージ結果を指す一時的な Git 参照を作成します。 これらの ref は、ベースブランチを変更せずに、GitHub とインテグレーションがプルリクエストを評価するのに役立ちます。

ほとんどのコントリビューターにとって、これらの ref は普段は意識されません。 これらは、自動化の構築、CI 動作のデバッグ、またはプル要求の状態をローカルでフェッチする場合に最も重要です。 マージ ブランチ GitHub Actions 使用方法については、「 [ワークフローをトリガーするイベント](/ja/enterprise-server@3.21/actions/reference/workflows-and-actions/events-that-trigger-workflows#how-the-merge-branch-affects-your-workflow)」を参照してください。

## 比較とプルリクエストページのコミットの違い

ページとプル要求ページを比較すると、異なるマージ ベースから変更されたファイルを計算できます。 その結果、同じ分岐で各場所で異なる相違が表示されることがあります。

これは通常、プル要求の作成後にベース ブランチが変更された場合に重要です。 プル要求ページはプル要求によって導入されたものに焦点を当て、比較ページは 2 つの ref 間の現在の比較を反映します。

## コラボレーション開発モデル

プルリクエストの使い方は、プロジェクトで使う開発モデルのタイプによります。 フォークおよびプル モデルまたは共有リポジトリ モデルを使用できます。

### フォークとプルモデル

フォークとプルモデルでは、既存の（「upstream」）リポジトリに対する読み取りアクセス権があり、かつそのアップストリーム リポジトリの所有者が許可していれば、誰でもそのリポジトリをフォークできます。 フォークとそのアップストリームは同じ Git データを共有することに注意してください。 つまり、フォークにアップロードされたすべてのコンテンツは、アップストリームとそのアップストリームの他のすべてのフォークからアクセスできます。

作成したフォークにプッシュするためにアップストリーム リポジトリからのアクセス許可は必要ありません。 オプションで、アップストリーム リポジトリにプッシュ アクセスを持つすべてのユーザーが pull request ブランチに変更を加えることを許可できます。 このモデルは、新しい共同作成者の摩擦を減らし、事前の調整なしで独立して作業できるため、オープンソース プロジェクトで人気があります。

> \[!TIP]
> オープン ソースに関する詳しい情報、特にオープン ソース プロジェクトの立ち上げと成長させる方法について、健全なオープン ソース コミュニティの育成を支援する「[オープン ソース ガイド](https://opensource.guide/)」を作成しました。オープン ソース コミュニティの維持に関する無料の [GitHub Skills](https://skills.github.com/) コースを受講することもできます。

### 共有リポジトリ モデル

共有リポジトリ モデルでは、コラボレーターは 1 つの共有リポジトリへのプッシュ アクセス権を持ち、変更が必要なときにトピック ブランチを作成します。 プル要求は、変更がメイン開発ブランチにマージされる前にコード レビューと一連の変更に関する一般的なディスカッションを開始するため、このモデルで役立ちます。 このモデルは、プライベート プロジェクトで共同作業を行う小規模なチームや組織でより一般的です。

## 詳細については、次を参照してください。

* [pull request の作成](/ja/enterprise-server@3.21/pull-requests/how-tos/create-pull-requests/creating-a-pull-request)
* [Branches](/ja/enterprise-server@3.21/pull-requests/reference/branches)
* [プルリクエストへのコメント](/ja/enterprise-server@3.21/pull-requests/how-tos/review-pull-requests/commenting-on-a-pull-request)
* [Creating a pull request from a fork](/ja/enterprise-server@3.21/pull-requests/how-tos/create-pull-requests/creating-a-pull-request-from-a-fork)
* [Allowing changes to a pull request branch created from a fork](/ja/enterprise-server@3.21/pull-requests/how-tos/work-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)