# Pull request の管理と標準化

テンプレート、コード所有者、保護されたブランチ、ルールセット、自動化されたツールを使用してプル要求を管理および標準化し、一貫性のある安全なリポジトリへの貢献を実現します。

リポジトリを管理する場合は、 GitHub 機能を使用して、pull request の一貫性を高め、確認しやすくすることができます。 標準化は、共同作成者が提供する情報を把握し、レビュー担当者が適切な変更に集中するのに役立ち、偶発的または危険なマージから重要なブランチを保護するのに役立ちます。

## Pull request テンプレートの使用

Pull request テンプレートは、共同作成者がプロジェクトでレビューに必要なコンテキストを提供するのに役立ちます。 テンプレートを使用すると、変更の目的を説明したり、関連する問題をリンクしたり、テスト ノートを含めたり、レビューを要求する前にチェックリストを完了したりすることができます。

テンプレートは、多くの共同作成者が pull request を開く場合や、プロジェクトが毎回表示される必要があるレビューの期待がある場合に便利です。 「[リポジトリ用のプルリクエストテンプレートの作成](/ja/enterprise-cloud@latest/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository)」、「[タスクリストについて](/ja/enterprise-cloud@latest/get-started/writing-on-github/working-with-advanced-formatting/about-tasklists)」、「[プルリクエストを課題にリンクする](/ja/enterprise-cloud@latest/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue)」をご覧ください。

## コード所有者の定義

コード所有者は、特定のファイルまたはディレクトリを担当するユーザーまたはチームを識別します。 プル要求が所有するコードを変更すると、 GitHub は適切な所有者にレビューを自動的に要求できます。

コード所有者は、適切なコンテキストを持つユーザーにレビューをルーティングするのに役立ちます。 これらは、セキュリティ ファイル、展開構成、共有ライブラリなどの機密性の高い領域に特に役立ちます。 「[コードオーナーについて](/ja/enterprise-cloud@latest/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)」を参照してください。

## 保護されたブランチの使用

保護されたブランチは、 `main`などの重要なブランチを安定した状態に保つのに役立ちます。 プルリクエストをマージする前に、ステータスチェックにパスすること、コミットに署名すること、レビュー承認を得ることなどを必須にできます。

ブランチが実稼働コード、リリース ライン、またはその他の重要な信頼のソースを表す場合は、保護されたブランチを使用します。 「[保護されたブランチについて](/ja/enterprise-cloud@latest/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches)」を参照してください。

## ルールセットを使う

ルールセットを使用すると、ブランチとタグ間でリポジトリ ポリシーを適用できます。 変更を受け入れる前に、状態チェック、ワークフロー、pull request レビュー、またはその他の条件を要求できます。

ルールセットは、複数のブランチ間で一貫性のあるルールが必要な場合や、レビュー要件を自動セキュリティ チェック (依存関係の確認やマージ保護など) と組み合わせる場合 code scanning 便利です。 「[ルールセットについて](/ja/enterprise-cloud@latest/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)」、「[organization 全体で依存関係レビューを実施する](/ja/enterprise-cloud@latest/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/enforce-dependency-review)」、「[コード スキャンのマージ保護を設定します](/ja/enterprise-cloud@latest/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/set-merge-protection)」をご覧ください。

## プッシュルールセットの使用

プッシュ ルールセットを使用すると、ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、ファイル サイズに基づいて、プライベート リポジトリまたは内部リポジトリとそのリポジトリのフォーク ネットワーク全体へのプッシュをブロックできます。

プッシュルールはリポジトリへのすべてのプッシュに適用されるため、ブランチのターゲット設定は必要ありません。

プッシュ ルールセットを使用すると、次のことができるようになります。

* **ファイル パスを制限する**: 指定したファイル パスに変更を含むコミットがプッシュされないようにします。

  これには `fnmatch` の構文を使用できます。 たとえば、`test/demo/**/*` を対象とする制限により、`test/demo/` ディレクトリ内のファイルまたはフォルダーへのプッシュが禁止されます。 `test/docs/pushrules.md` を対象とした制限により、`test/docs/` ディレクトリ内の `pushrules.md` ファイルへのプッシュが禁止されます。 詳しくは、「[リポジトリのルールセットの作成](/ja/enterprise-cloud@latest/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#using-fnmatch-syntax)」をご覧ください。
* **ファイル パスの長さを制限する**: 指定した文字制限を超えるファイル パスを含むコミットがプッシュされないようにします。
* **ファイル拡張子を制限する**: 指定したファイル拡張子を持つファイルを含むコミットがプッシュされないようにします。
* **ファイル サイズを制限する**: 指定したファイル サイズの制限を超えるコミットがプッシュされないようにします。

### フォークされたリポジトリのプッシュ ルールセットについて

プッシュ ルールは、リポジトリのフォーク ネットワーク全体に適用され、リポジトリへのすべてのエントリ ポイントが確実に保護されます。 たとえば、プッシュルールセットが有効になっているリポジトリをフォークした場合、フォークされたリポジトリにも同じプッシュルールセットが適用されます。

フォークされたリポジトリの場合、プッシュ ルールのバイパス アクセス許可を持つユーザーは、ルート リポジトリのバイパス アクセス許可を持つユーザーだけです。

プッシュ ルールセットは、リポジトリに入る前に危険なコンテンツをブロックするのに役立ちます。 「[ルールセットについて](/ja/enterprise-cloud@latest/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets)」を参照してください。

## 自動ツールを使ってコード スタイルを確認する

リンターやフォーマッタなどの自動化されたツールは、プル要求間でコード スタイルの一貫性を維持するのに役立ちます。 小さな問題を自動的にキャッチできるため、レビュー担当者は設計、正確性、保守容易性に重点を置くことができます。

これらのツールは、 GitHub Actionsを使用した継続的インテグレーション ワークフローの一部として実行できます。 「[継続的インテグレーション](/ja/enterprise-cloud@latest/actions/get-started/continuous-integration)」を参照してください。