Git pre-push 钩子未工作

8

我已经在.git/hooks目录下放置了一个名为pre-push.sh的文件。

我没有进行任何检查,只是想在推送到远程时输出一些错误信息。以下是.sh文件的内容:

protected_branch='test'
echo $protected_branch
exit 1

然而,它仍然允许推送更改而不抛出任何错误。需要帮助找到我犯了什么错误?

3个回答

17
钩子的名称必须完全是pre-push(不是pre-push.sh,不是pre-push.exe,也不是pre-push.py ...)。
此外:钩子应该是可执行的,否则它将被忽略。
chmod u+x .git/hooks/pre-push

7

我刚遇到了同样的问题,钩子有一个正确的名称,但也必须确保它是可执行的。

chmod 766 .git/hooks/pre-push

问题已经解决。


3

pre-push.sh不是一个有效的钩子名称。相反,它需要作为pre-receive钩子放置在服务器上。


这是预推送的样本文件数量 https://github.com/raven/git-prepush-recipes ,根据文档,它在推送之前在客户端工作。 - Kishan Rajdev
1
好的 - 从未使用过。始终在服务器端运行事物。尝试不使用“.sh”扩展名。 - mproffitt
@Flash,那个 Github 链接已经失效了。 - reformed
答案只有部分正确。pre-push是一个有效的钩子:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks,在“其他客户端钩子”下。 - jcollum
因为错误而被踩了。 - Guildenstern

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接