Skip to main content

管理分支保护规则

您可以创建分支保护规则对一个或多个分支实施某些工作流程,例如要求批准审查或通过状态检查才能将拉取请求合并到受保护分支。

People with admin permissions to a repository can manage branch protection rules.

受保护分支适用于具有 GitHub Free 和组织的 GitHub Free 的公共仓库,以及具有 GitHub Pro、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server 的公共和私有仓库。

关于分支保护规则

您可以在仓库中为特定分支、所有分支或者与使用 fnmatch 语法指定的命名模式匹配的任何分支创建分支保护规则。 例如,要保护包含文字 release 的任何分支,您可以为 *release* 创建分支规则。

您还可以使用通配符语法 * 为仓库中的所有当前和未来分支创建规则。 由于 GitHub 对 File.fnmatch 语法使用 File::FNM_PATHNAME 标记,因此通配符与目录分隔符 (/) 不匹配。 例如,qa/* 将匹配以 qa/ 开头并包含单个斜杠的所有分支。 您可以通过 qa/**/* 包含多个斜杠,也可以通过 qa**/**/* 扩展 qa 字符串,使规则更具包容性。 有关分支规则语法选项的更多信息,请参阅 fnmatch 文档

如果仓库有多个影响相同分支的受保护分支规则,则包含特定分支名称的规则具有最高优先级。 如果有多个受保护分支规则引用相同的特定规则名称,则最先创建的分支规则优先级更高。

提及特殊字符(如 *?])的受保护分支按其创建的顺序应用,因此含有这些字符的规则创建时间越早,优先级越高。

要创建对现有分支规则的例外,您可以创建优先级更高的新分支保护规则,例如针对特定分支名称的分支规则。

有关每个可用分支保护设置的更多信息,请参阅“关于受保护分支”。

创建分支保护规则

创建分支规则时,指定的分支不必是仓库中现有的分支。

  1. 在 您的 GitHub Enterprise Server 实例 上,导航到仓库的主页面。

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. 在边栏的“Code and automation(代码和自动化)”部分中,单击 Branches(分支)

  4. 在“Branch protection rules(分支保护规则)”旁边,单击 Add rule(添加规则)添加分支保护规则按钮

  5. 在“Branch name pattern(分支名称模式)”下,输入您要保护的分支名称或模式。 分支规则字段

  6. (可选)启用所需的拉取请求。

    • 在“Protect matching branches(保护匹配分支)”下,选择 Require a pull request before merging(合并前需要拉取请求)拉取请求审查限制复选框

    • (可选)要在合并拉取请求之前要求审批,请选择 Require approvals(需要审批),单击 Required number of approvals before merging(合并前所需的审批数)下拉菜单,然后选择您希望在分支上要求的审批审核数。 用于选择必需审查批准数量的下拉菜单

    • (可选)要在将代码修改提交推送到分支时忽略拉取请求批准审查,请选择 Dismiss stale pull request approvals when new commits are pushed(推送新提交时忽略旧拉取请求批准)在推送新提交时,关闭旧拉取请求批准的复选框

    • (可选)要在拉取请求影响具有指定所有者的代码时要求代码所有者审查,请选择 Require review from Code Owners(需要代码所有者审查)。 更多信息请参阅“关于代码所有者”。 代码所有者的必需审查

    • (可选)若要允许特定参与者在需要时将代码推送到分支而不创建拉取请求,请选择 Allow specific actors to bypass required pull requests(允许特定参与者绕过所需的拉取请求)。 然后,搜索并选择应被允许跳过创建拉取请求的参与者。 允许特定参与者绕过拉取请求要求复选框

    • (可选)如果仓库属于组织,请选择 Restrict who can dismiss pull request reviews(限制谁可以忽略拉取请求审查)。 然后,搜索并选择有权忽略拉取请求审查的参与者。 更多信息请参阅“忽略拉取请求审查”。 限制谁可以关闭拉取请求评审复选框

  7. (可选)启用必需状态检查。 更多信息请参阅“关于状态检查”。

    • 选中 Require status checks to pass before merging(合并前必需状态检查通过)必需状态检查选项
    • (可选)要确保使用受保护分支上的最新代码测试拉取请求,请选择 Require branches to be up to date before merging(要求分支在合并前保持最新)宽松或严格的必需状态复选框
    • 搜索状态检查,选择您想要求的检查。 可用状态检查的搜索界面,以及所需检查的列表
  8. (可选)选中 Require conversation resolution before merging(在合并前需要对话解决)合并选项前需要对话解决

  9. (可选)选择 Require signed commits(必需签名提交)必需签名提交选项

  10. (可选)选择 Require linear history(必需线性历史记录)必需的线性历史记录选项

  11. (可选)要选择在合并之前必须将更改成功部署到哪些环境,请选择 Require deployments to succeed before merging(在合并之前需要部署成功),然后选择环境。 需要成功部署选项

  12. (可选)选择 Apply the rules above to administrators(将上述规则应用于管理员)将上述规则应用于管理员复选框

  13. (可选) 启用分支限制。

    • 选择 Restrict who can push to matching branches(限制谁可以推送到匹配分支)Branch restriction checkbox
    • 搜索并选择将有权推送到受保护分支或创建匹配分支的人员、团队或应用。 分支限制搜索
  14. (可选)在“Rules applied to everyone including administrators(适用于包括管理员在内的所有人规则)”下,选择 Allow force pushes(允许强制推送)允许强制推送选项

    然后,选择谁可以强制推送到分支。

    • 选择 Everyone(每个人)以允许至少具有存储库写入权限的每个人强制推送到分支,包括具有管理员权限的人员。

    • 选择 Specify who can force push(指定谁可以强制推送),仅允许特定参与者强制推送到分支。 然后,搜索并选择这些参与者。 指定谁可以强制推送的选项的屏幕截图

      有关强制推送的详细信息,请参阅“允许强制推送”。

  15. (可选)选择 Allow deletions(允许删除)允许分支删除选项

  16. 单击 Create(创建)

编辑分支保护规则

  1. 在 您的 GitHub Enterprise Server 实例 上,导航到仓库的主页面。

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. 在边栏的“Code and automation(代码和自动化)”部分中,单击 Branches(分支)

  4. 在要编辑的分支保护规则的右侧,单击 Edit(编辑)编辑按钮

  5. 对分支保护规则进行所需的更改。

  6. 单击 Save changes(保存更改)Edit message 按钮

删除分支保护规则

  1. 在 您的 GitHub Enterprise Server 实例 上,导航到仓库的主页面。

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. 在边栏的“Code and automation(代码和自动化)”部分中,单击 Branches(分支)

  4. 在要删除的分支保护规则的右侧,单击 Delete(删除)删除按钮