如何修改GitHub分支保护规则,仅允许特定命名的Feature分支合并PR到Master
解决GitHub仅允许特定命名分支PR合并到Master的方法
GitHub原生分支保护规则确实没有直接按源分支名称模式限制合并的选项,不过可以通过GitHub Actions工作流实现这个需求,步骤如下:
编写分支检查工作流
在仓库的.github/workflows目录下新建一个YAML文件(比如pr-branch-check.yml),添加以下代码:name: Validate PR Source Branch on: pull_request: types: [opened, synchronize, reopened] branches: [master] jobs: check-branch-pattern: runs-on: ubuntu-latest steps: - name: Check source branch name run: | # 获取PR的源分支名称 HEAD_BRANCH="${{ github.head_ref }}" # 检查分支是否以test_patch/开头 if [[ ! "$HEAD_BRANCH" =~ ^test_patch/ ]]; then echo "❌ 错误:仅允许从test_patch/开头的分支向Master提交PR" exit 1 fi echo "✅ 源分支名称符合要求"配置分支保护规则
- 进入仓库的「Settings」→「Branches」→「Branch protection rules」,找到Master分支的保护规则
- 勾选「Require status checks to pass before merging」选项
- 在「Status checks that are required」列表中,找到刚才创建的工作流状态(比如
check-branch-pattern)并添加进去 - 保存规则
这样设置后,任何从非test_patch/*开头的分支向Master提交的PR,都会触发工作流检查失败,无法完成合并。如果需要支持多种分支命名模式,可以修改正则表达式,比如^test_patch/|^hotfix/来同时允许test_patch/和hotfix/前缀的分支。
内容的提问来源于stack exchange,提问作者Sudarsan Sivan
相关产品推荐
相关产品推荐

