近期团队里头总是有人在本地master分支不小心提交代码到远程,很是恼火。
要设置 Git 本地 master 分支 禁止 push ,核心思路是利用 Git 的钩子(hook) 功能,在执行 push 操作前触发脚本检查,若检测到推送的是 master 分支则直接阻断。
操作步骤
-
进入本地仓库的钩子目录进入你的 Git 仓库根目录,找到隐藏的
.git/hooks文件夹,该目录下默认有很多.sample后缀的示例钩子脚本。 -
创建
pre-push钩子脚本在.git/hooks目录下新建一个无后缀名的文件pre-push,并写入以下内容:
bash1
2
3
4
5
6
7
8
9
10
# 遍历要推送的分支
while read local_ref local_sha remote_ref remote_sha; do
# 判断本地分支是否为 master
if [ "$local_ref" = "refs/heads/master" ]; then
echo "Error: 禁止推送 master 分支!" >&2
exit 1
fi
done
exit 0这个脚本的作用是:在
push执行前,检查要推送的本地分支是否为master,如果是则输出错误信息并终止push流程。 -
赋予脚本可执行权限在终端中执行以下命令,给
pre-push脚本添加可执行权限(否则 Git 不会触发该钩子):
bash1
chmod +x .git/hooks/pre-push