近期团队里头总是有人在本地master分支不小心提交代码到远程,很是恼火。
要设置 Git 本地 master 分支 禁止 push ,核心思路是利用 Git 的钩子(hook) 功能,在执行 push 操作前触发脚本检查,若检测到推送的是 master 分支则直接阻断。
操作步骤
-
进入本地仓库的钩子目录进入你的 Git 仓库根目录,找到隐藏的
.git/hooks文件夹,该目录下默认有很多.sample后缀的示例钩子脚本。 -
创建
pre-push钩子脚本在.git/hooks目录下新建一个无后缀名的文件pre-push,并写入以下内容:
bash#!/bin/sh # 遍历要推送的分支 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 不会触发该钩子):
bashchmod +x .git/hooks/pre-push