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

Git/Azure Repos:存在release/*分支时能否阻止master分支提交?

阻止或警告master分支在release阶段的提交方案

服务器端:强制阻止向master提交

通过Git的pre-receive钩子可在服务器层面拦截所有向master分支的推送,当仓库中存在release/*分支时直接拒绝操作。

  1. 在Git服务器的目标仓库目录下,进入hooks文件夹,创建pre-receive脚本(移除原有.sample后缀的同名文件):
#!/bin/bash

# 检测是否存在远程release/*分支
has_release_branch=$(git branch -r | grep -E '^origin/release/')

while read oldrev newrev refname; do
    target_branch=$(git rev-parse --symbolic --abbrev-ref "$refname")
    
    # 若推送目标是master且存在release分支,拒绝推送
    if [ "$target_branch" = "master" ] && [ -n "$has_release_branch" ]; then
        echo "ERROR: 存在release/*分支,禁止向master提交代码。请完成release分支合并后再操作。"
        exit 1
    fi
done

exit 0
  1. 给脚本添加执行权限:
chmod +x hooks/pre-receive

本地端:推送前给出警告提示

通过本地pre-push钩子,在开发者向master推送前触发警告,提醒当前处于release阶段不建议提交。

  1. 在本地仓库的.git/hooks目录下创建pre-push脚本:
#!/bin/bash

# 检测本地或远程是否存在release/*分支
has_local_release=$(git branch | grep -E '^release/')
has_remote_release=$(git branch -r | grep -E '^origin/release/')

current_branch=$(git rev-parse --abbrev-ref HEAD)

if [ "$current_branch" = "master" ] && ([ -n "$has_local_release" ] || [ -n "$has_remote_release" ]); then
    echo "WARNING: 当前存在release/*分支,不建议向master提交代码。请确认操作必要性。"
    # 若需要强制阻止本地推送,取消下方注释
    # exit 1
fi

exit 0
  1. 给脚本添加执行权限:
chmod +x .git/hooks/pre-push

托管平台补充方案

如果使用GitLab、GitHub等托管平台,可结合分支保护规则与CI/CD流水线实现:

  • 开启master分支的PR合并强制规则,禁止直接推送
  • 在PR合并前添加检查步骤:检测仓库中是否存在release/*分支,若存在则标记PR为不可合并状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:48:22