如何防止误推送代码到未受保护的master分支?

避免误推送至无保护master分支的落地方法
本地端独立防控方案(无需依赖权限或团队配合)
- 给本地master分支设置禁止推送规则
执行命令git config branch.master.pushRemote no_push即可完成配置,配置后哪怕你当前在master分支执行git push,git会直接返回错误拒绝推送,完全不会触发远端提交。如果后续确实需要直接推送master,删掉这条配置就能恢复。 - 配置本地pre-push钩子拦截
在仓库的.git/hooks/pre-push文件中写入如下逻辑:
写完后给文件加执行权限#!/bin/sh protected_branch='master' current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') if [ $current_branch = $protected_branch ]; then echo "错误:禁止直接推送至master分支,请提交PR/MR合并" exit 1 fi exit 0chmod +x .git/hooks/pre-push,后续所有本地推送都会先经过这层校验,目标是master就会直接终止。 - 日常开发避免切换到master分支
拉新功能分支直接从远端master拉取,命令为git fetch origin && git checkout -b 新分支名 origin/master,全程不用切本地master,从操作路径上减少误碰的可能。
团队协作兜底方案
- 严格执行PR/MR合入流程
团队统一约定所有master分支变更必须提交PR/MR,至少经过1人代码评审后才能合并,从流程上完全杜绝直接推送的操作。 - 配置master分支推送告警
若使用企业版GitLab/GitHub或自建Git服务,可以给master分支的直接推送操作配置告警,只要有直推行为就给所有项目维护人员发消息通知,出现问题可以第一时间排查回滚。 - 定期备份master分支快照
固定时间拉取master分支的全量备份,哪怕真的出现误推导致代码问题,也能快速回滚到正常版本,不会影响线上业务。
内容的提问来源于stack exchange,提问作者mlaraki
相关产品推荐
相关产品推荐

