You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab如何设置受保护分支正则格式限制仓库分支推送?

GitLab分支命名规范校验及推送拦截方案

先纠正你的误区:Protected Branches 不是干这个的

你用的「Protected branches > Protect a branch wildcard」是用来保护特定分支的(比如限制只有管理员能推送),它的作用是匹配现有分支并设置权限,不是用来拦截不符合规范的分支推送,所以显示0匹配很正常——仓库里没符合这个正则的现有分支,自然匹配不到。

正确实现分支校验的工具:Push Rules

要实现「阻止不符合命名规范的分支推送」,得用GitLab的Push Rules功能(需要仓库管理员权限),步骤如下:

  1. 进入仓库的「Settings > Repository」页面,往下翻找到Push rules区块
  2. 在Branch name输入框里填写正确的正则表达式——你之前写的^(bug)?(release)?(feature)?/.*有问题,它允许空前缀(三个前缀都是可选的),没法满足「至少包含一种前缀」的要求,正确的正则应该是:
    ^(bug|release|feature)/.*$
    
    简单解释:
    • ^(bug|release|feature):分支名必须以bug、release、feature其中一个开头
    • /:前缀后面必须跟斜杠(比如bug/fix-avatar这种格式)
    • .*$:斜杠后面可以跟任意内容,满足你自定义分支名的需求
  3. 保存设置后,所有不符合这个正则的分支推送都会被GitLab直接拒绝。

测试验证

  • 本地创建符合规范的分支:git checkout -b feature/add-pay,推送后正常生效
  • 尝试创建不符合规范的分支:git checkout -b test/temp,推送时会收到GitLab的错误提示,拦截推送

补充:如果要保护规范内的分支

如果需要对符合命名规范的分支设置权限(比如只有维护者能推送),可以回到「Protected branches」,用wildcard分别设置bug/*、release/*、feature/*,此时如果仓库里已有这类分支,就会显示匹配数量了。

内容的提问来源于stack exchange,提问作者edjm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:51:21