配置咨询:用户启用Bypass policies when pushing后,如何禁止其直接提交至Main分支
如何禁止拥有「推送时绕过策略」权限的用户直接提交到Main分支
当用户持有Bypass policies when pushing权限时,常规的分支保护规则(比如强制PR、状态检查)对他们无效——因为这个权限允许他们直接跳过这些限制。要实现禁止直接提交,得从底层权限控制或分支锁定入手,以下是主流Git平台的具体操作:
方法1:精准限制用户对Main分支的推送权限
这是最灵活的方案,直接从权限层面阻断,不管用户有没有绕过策略的权限,都没法直接推送到Main。
GitHub 操作步骤
- 打开仓库的「Settings」→「Branches」页面,找到Main分支的保护规则(没有的话先新建)
- 往下翻找到「Restrict who can push to matching branches」,勾选这个选项
- 在输入框里添加允许推送Main的用户/团队,把目标用户排除在外
- 保存规则即可

Azure DevOps 操作步骤
- 进入项目的「Repos」→「Branches」,找到Main分支,点击右侧的「...」选择「Branch security」
- 在权限列表里找到目标用户,把「Contribute」权限设为Deny
- 保存设置

方法2:直接锁定Main分支
如果不需要区分用户,只想彻底禁止任何人直接推送Main,用分支锁定就行——锁定后哪怕有绕过策略权限的用户也没法直接推,只能通过PR合并。
GitHub 操作步骤
- 同样到仓库「Settings」→「Branches」的Main分支保护规则里
- 勾选「Lock branch」选项,保存即可

GitLab 操作步骤
- 进入仓库「Settings」→「Repository」→「Protected branches」
- 找到Main分支,勾选「Prevent pushes to this branch」,保存设置

重要提醒
Bypass policies when pushing权限只是让用户能跳过PR要求、状态检查这类分支保护规则,但绕不开直接的推送权限限制和分支锁定——这俩是更高优先级的控制手段。
内容的提问来源于stack exchange,提问作者Geezer
相关产品推荐
相关产品推荐

