跳至主要内容

管理分支保护规则

您可以创建分支保护规则,以对一个或多个分支强制执行特定工作流,例如要求批准审查或通过状态检查,适用于所有合并到受保护分支的拉取请求。

谁可以使用此功能?

拥有管理员权限或在仓库中拥有 “编辑仓库规则” 权限的自定义角色的人员可以管理分支保护规则。

受保护的分支在 GitHub Free 和组织版 GitHub Free 的公共仓库中可用。受保护的分支也在 GitHub Pro、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server 的公共和私有仓库中可用。欲了解更多信息,请参阅 GitHub 的计划

关于分支保护规则

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

您可以使用通配符语法 * 为仓库中所有当前和未来的分支创建规则。由于 GitHub 对 File.fnmatch 语法使用了 File::FNM_PATHNAME 标志,* 通配符不匹配目录分隔符(/)。例如,qa/* 将匹配所有以 qa/ 开头且只包含一个斜杠的分支,但不会匹配 qa/foo/bar。您可以使用 qa/**/*qa 后包含任意数量的斜杠,这将匹配例如 qa/foo/bar/foobar/hello-world。您还可以使用 qa**/**/* 来进一步放宽规则。

有关语法选项的更多信息,请参阅 fnmatch 文档

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

包含特殊字符(如 *?])的受保护分支规则会按照创建的先后顺序应用,较早创建的规则拥有更高的优先级。

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

有关每个可用分支保护设置的详细信息,请参阅 关于受保护的分支

注意

一次只能应用单个分支保护规则,这意味着当多个规则针对同一分支时,可能难以判断哪个规则会生效。有关分支保护规则的替代方案,请参阅 关于规则集

创建分支保护规则

创建分支规则时,您指定的分支不必已经存在于仓库中。

注意

只有当仓库属于组织时,才能将执行者添加到绕过列表中。

  1. 在 GitHub 上,导航至仓库的主页面。

  2. 在您的仓库名称下方,点击 设置。如果您看不到 “Settings” 选项卡,请选择 下拉菜单,然后点击 设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的 “代码与自动化” 部分,点击 分支

  4. 在 “分支保护规则” 旁边,点击 添加规则。

  5. 在 “分支名称模式” 下,输入您想要保护的分支名称或模式。

  6. 可选,启用必需的拉取请求。

    注意

    如果您选择 在推送新提交时撤销陈旧的拉取请求批准 和/或 要求对最近可审查的推送进行批准,则手动创建合并提交并直接推送到受保护分支将会失败,除非合并内容与 GitHub 为该拉取请求生成的合并完全一致。

    此外,使用这些设置时,如果在提交审查后合并基发生了新更改,批准的审查将被视为陈旧并被撤销。合并基是主题分支和基分支之间的最后共同祖先。如果合并基变化,拉取请求必须重新获得批准才能合并。

    • 在 “保护匹配分支” 下,选择 合并前需要拉取请求

    • 可选,为了在合并前要求批准,选择 要求批准

      选择 合并前所需的批准数量 下拉菜单,然后点击您希望在该分支上要求的批准审查数量。

    • 可选,为了在向分支推送修改代码的提交时撤销拉取请求的批准审查,选择 在推送新提交时撤销陈旧的拉取请求批准

    • 可选,为了在拉取请求涉及具有指定所有者的代码时要求代码所有者审查,选择 要求代码所有者审查。请注意,如果代码有多个所有者,任意 一个代码所有者的批准即可满足此要求。更多信息,请参阅 关于代码所有者

    • 可选,为了允许特定执行者在需要拉取请求时直接向分支推送代码,选择 允许指定的执行者绕过必需的拉取请求。随后,在搜索框中搜索并选择应被允许跳过创建拉取请求的执行者。

    • 可选,如果仓库属于组织,选择 限制谁可以撤销拉取请求审查。然后,在搜索框中搜索并选择被允许撤销拉取请求审查的执行者。更多信息,请参阅 撤销拉取请求审查

    • 可选,为了在合并前要求除最近一次推送者之外的其他人批准拉取请求,选择 要求对最近可审查的推送进行批准。更多信息,请参阅 关于受保护的分支

  7. 可选,启用必需的状态检查。更多信息,请参阅 关于状态检查

    • 选择 合并前要求状态检查通过
    • 可选,为了确保拉取请求在受保护分支的最新代码上进行测试,选择 合并前要求分支保持最新
    • 在搜索框中搜索状态检查,选择您想要强制的检查。
  8. 可选,选择 合并前要求对话已解决

  9. 可选,选择 要求已签名的提交

  10. 可选,选择 要求线性历史

  11. 可选,为了使用合并队列合并拉取请求,选择 要求合并队列。有关合并队列的更多信息,请参阅 管理合并队列

  12. 可选,为了在合并前选择更改必须成功部署到的环境,选择 合并前要求部署成功,然后选择相应的环境。

  13. 可选,使该分支只读。

    • 选择 锁定分支
    • 可选,允许分叉同步,选择 允许分叉同步
  14. 可选,选择 不允许绕过上述设置

  15. 可选,在 GitHub 免费组织拥有的公共仓库以及使用 GitHub Team 或 GitHub Enterprise Cloud 的组织拥有的所有仓库中,启用分支限制。

    • 选择 限制谁可以推送到匹配的分支
    • 可选,为了也限制创建匹配分支的推送,选择 限制创建匹配分支的推送
    • 在搜索框中搜索并选择有权限推送到受保护分支或创建匹配分支的人员、团队或应用。
  16. 可选,在 “规则适用于包括管理员在内的所有人” 下,选择 允许强制推送

    然后,选择谁可以对该分支执行强制推送。

    • 选择 所有人,允许具有至少写入权限的仓库所有人(包括管理员)对该分支进行强制推送。
    • 选择 指定谁可以强制推送,仅允许特定执行者对该分支进行强制推送。随后,搜索并选择这些执行者。

    有关强制推送的更多信息,请参阅 关于受保护的分支

  17. 可选,选择 允许删除

  18. 点击 创建

编辑分支保护规则

  1. 在 GitHub 上,导航至仓库的主页面。

  2. 在您的仓库名称下方,点击 设置。如果您看不到 “Settings” 选项卡,请选择 下拉菜单,然后点击 设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的 “代码与自动化” 部分,点击 分支

  4. 在您想编辑的分支保护规则右侧,点击 编辑

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

  6. 点击 保存更改

删除分支保护规则

  1. 在 GitHub 上,导航至仓库的主页面。

  2. 在您的仓库名称下方,点击 设置。如果您看不到 “Settings” 选项卡,请选择 下拉菜单,然后点击 设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的 “代码与自动化” 部分,点击 分支

  4. 在您想删除的分支保护规则右侧,点击 删除

© . This site is unofficial and not affiliated with GitHub, Inc.