Git push hook禁用push to branch

时间:2014-07-11 09:53:46

标签: git continuous-integration workflow branch hook

我们需要阻止推送到我们的bitbucket repo上的某个分支。

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

有没有办法阻止通过一些预推钩在本地推送到某个分支?

操作系统:Windows。

1 个答案:

答案 0 :(得分:2)

这显然是一个次优的解决方案,但由于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

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

有关预推钩的更多信息,您可以查看example file,如果您想了解更多关于钩子的信息,可以阅读corresponding chapter in the gitpro book


重要

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

显然,服务器端update挂钩更可取。