git怎么设置本地master分支禁止push到远程仓库


近期团队里头总是有人在本地master分支不小心提交代码到远程,很是恼火。

要设置 Git 本地 master 分支 禁止 push ,核心思路是利用 Git 的钩子(hook) 功能,在执行 push 操作前触发脚本检查,若检测到推送的是 master 分支则直接阻断。

操作步骤

  1. 进入本地仓库的钩子目录进入你的 Git 仓库根目录,找到隐藏的 .git/hooks 文件夹,该目录下默认有很多 .sample 后缀的示例钩子脚本。

  2. 创建 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 流程。

  3. 赋予脚本可执行权限在终端中执行以下命令,给 pre-push 脚本添加可执行权限(否则 Git 不会触发该钩子):
    bash

    chmod +x .git/hooks/pre-push

评论