Git Push hook 禁用推送到分支

kor*_*ead 2 git workflow hook continuous-integration branch

我们需要防止推送到 bitbucket 存储库上的某个分支。

我们认为我们可以在本地预防它。

有什么方法可以防止通过某些预推送挂钩推送到本地某个分支?

操作系统:Windows。

Sas*_*olf 6

这显然是一个次优的解决方案,但由于 BitBucket 不提供添加更新挂钩的可能性,我无论如何都会提供它。

为了防止通过本地钩子推送到分支,您可以使用钩子pre-push(自 git 1.8.2 起可用)。

#!/bin/sh

while read local_ref local_sha remote_ref remote_sha
do
     if [ "$remote_ref" = "refs/heads/test" ]; then
        echo "Pushing to branch \"test\" is forbidden"
        exit 1
     fi
done

exit 0
Run Code Online (Sandbox Code Playgroud)

只需替换test为您想要防止推送的相应分支名称即可。

有关 pre-push hook 的更多信息,您可以查看示例文件,如果您想了解有关 hooks 的更多信息,您可以阅读gitpro 书中的相应章节


重要的

请记住,您必须在存储库的每个克隆中安装此挂钩,因为它是客户端挂钩而不是服务器端挂钩。

显然,服务器端update挂钩会更好。