能否设置Git主分支在指定时段(如1小时)禁止合并PR?
临时禁止PR合并至Master分支的解决方案
1. 托管平台分支保护规则(主流平台通用)
大部分Git托管平台(GitHub、GitLab、Gitee等)都支持分支级别的临时防护:
- 进入仓库分支设置页,找到master分支的保护配置
- 临时启用**"禁止直接推送/合并至该分支",或者开启"必须通过指定审核者审核才能合并"**,并设置一个暂时不会通过审核的账号作为审核人
- 部分平台(如GitLab)支持设置规则生效时间段,直接配置当前起1小时内的保护规则即可,到期自动失效
2. 自建Git服务器:用pre-receive钩子拦截
如果是私有自建Git服务器,可通过服务器端钩子临时阻止合并:
- 进入仓库的
.git/hooks目录 - 创建
pre-receive脚本文件,写入以下内容:
#!/bin/bash # 计算1小时后的时间戳 block_end=$(( $(date +%s) + 3600 )) while read oldrev newrev refname; do # 仅拦截master分支的合并/推送 if [[ $refname == "refs/heads/master" ]]; then if [[ $(date +%s) -lt $block_end ]]; then echo "拒绝操作:当前处于临时保护时段,1小时后允许合并至master" exit 1 fi fi done exit 0
- 给脚本添加执行权限:
chmod +x pre-receive - 1小时后,删除或重命名该钩子文件即可恢复正常
3. 直接锁定master分支
部分平台支持一键锁定分支:
- GitHub:在分支列表找到master,点击"Lock branch"锁定,到期后点击"Unlock branch"解除
- GitLab:在分支保护设置中开启"Lock branch"选项,临时禁用所有对master的写入操作
注意:所有临时限制记得在1小时后及时解除,避免阻塞正常开发流程。
内容的提问来源于stack exchange,提问作者kfsopdf
相关产品推荐
相关产品推荐

