# 管理和标准化拉取请求

使用模板、代码所有者、受保护的分支、规则集和自动化工具管理和标准化拉取请求，以保持一致且安全的存储库贡献。

如果维护存储库，可以使用 GitHub 功能使拉取请求更加一致且更易于查看。 标准化有助于参与者了解要提供的信息，帮助审阅者专注于正确的更改，并帮助保护重要分支免受意外或有风险的合并的影响。

## 使用拉取请求模板

拉取请求模板可帮助贡献者提供项目审查所需的背景信息。 模板可以提示作者在请求评审之前解释更改的目的、链接相关问题、包括测试说明或完成清单。

当许多贡献者发起拉取请求，或者你的项目有需要在每次审查时都清楚显示的评审要求时，模板非常有用。 请参阅 [为仓库创建拉取请求模板](/zh/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository)、[关于任务列表](/zh/get-started/writing-on-github/working-with-advanced-formatting/about-tasklists) 和 [将拉取请求链接到议题](/zh/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue)。

## 定义代码所有者

代码所有者标识负责特定文件或目录的人员或团队。 当拉取请求更改了有归属的代码时，GitHub 可以自动向合适的所有者请求评审。

代码所有者可帮助将评审请求分配给具备相关背景的人员。 它们对于安全文件、部署配置或共享库等敏感领域特别有用。 请参阅“[关于代码所有者](/zh/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)”。

## 使用受保护的分支

受保护的分支有助于保持重要的分支，例如 `main`稳定。 它们可以要求在拉取请求合并之前满足某些条件，例如通过状态检查、签名提交，或审核获得批准。

当分支表示生产代码、发布行或其他重要事实来源时，请使用受保护的分支。 请参阅“[关于受保护分支](/zh/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches)”。

## 使用规则集

规则集允许跨分支和标记强制实施存储库策略。 在更改被接受前，他们可以要求进行状态检查、工作流、拉取请求审核或满足其他条件。

如果希望跨多个分支使用一致的规则，或者希望将评审要求与自动安全检查（例如依赖项评审或 code scanning 合并保护）组合在一起，则规则集非常有用。 请参阅 [关于规则集](/zh/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)、[在整个组织内强制执行依赖项审查](/zh/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/enforce-dependency-review) 和 [设置代码扫描合并保护](/zh/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/set-merge-protection)。

## 使用推送规则集

使用推送规则集，可以阻止对专用或内部存储库的推送，以及对此存储库整个分支网络的推送，具体取决于文件扩展名、文件路径长度、文件和文件夹路径以及文件大小。

推送规则不需要针对任何分支，因为它们会应用于对存储库的每条推送。

推送规则集允许你：

* **限制文件路径**：阻止推送包含指定文件路径更改的提交。

  可以为此使用 `fnmatch` 语法。 例如，针对 `test/demo/**/*` 的限制可阻止对 `test/demo/` 目录中的文件或文件夹进行任何推送。 针对 `test/docs/pushrules.md` 的限制可阻止对 `pushrules.md` 目录中 `test/docs/` 文件的专门推送。 有关详细信息，请参阅“[创建存储库的规则集](/zh/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#using-fnmatch-syntax)”。
* **限制文件路径长度**：阻止推送包含超过指定字符限制的文件路径的提交。
* **限制文件扩展名**：阻止推送包含具有指定文件扩展名的文件的提交。
* **限制文件大小**：阻止推送超过指定文件大小限制的提交。

### 关于向已创建分支的存储库推送规则集

推送规则适用于存储库的整个分支网络，以确保存储库的每个入口点均受到保护。 例如，如果将已启用推送规则集的存储库创建为分支，则相同的推送规则集也适用于已创建分支的存储库。

对于已创建分支的存储库，只有对推送规则具有旁路权限的人员是根存储库中具有旁路权限的人员。

推送规则集有助于在进入存储库之前阻止有风险的内容。 请参阅“[关于规则集](/zh/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets)”。

## 使用自动化工具评审代码样式

自动化工具（如代码检查工具和格式化工具）有助于在各个拉取请求中保持代码风格一致。 他们可以自动捕获小问题，以便审阅者可以专注于设计、正确性和可维护性。

您可以借助 GitHub Actions 将这些工具作为持续集成工作流的一部分来运行。 请参阅“[持续集成](/zh/actions/get-started/continuous-integration)”。