当我'git push'时,git钩子是否被推送到远程?


92

如果我在本地存储库中的repo / .git / hooks / post-commit中创建一个新的钩子脚本,然后运行“ git push”,钩子是否被推送到远程了?然后,当其他开发人员从同一来源运行“ git pull”时,他们会得到我的新钩子吗?



相关信息(有非常有用的答案):Git挂钩脚本可以与存储库一起管理吗?
Marc.2377

Answers:


79

否。挂钩是基于存储库的,永远不会被推送。同样,repo config也不会被推送,中的任何内容也不会被推送.git/info,或者其他许多东西也不会被推送。

推和拉仅交换分支/标签和提交对象(以及从提交中可以到达的任何内容,例如树,斑点)。


14
有没有一种方法可以将钩挂在中央并将其拉到每个克隆上并应用。
f1wade 2016年

3
@ f1wade您可以添加一个.githooks目录,该目录将受版本控制,然后通过sym-link或从inside创建包装钩子脚本.git。克隆不会自动.githooks插入,但是一旦插入,您就可以推送和拉出新版本的钩子脚本。
菲利普·库林

47

不,git钩子不会被推送或拉出,因为它们不是存储库代码的一部分。

请参阅文档,以获取简单的客户端和服务器端挂钩的列表。

如果要为从给定存储库克隆或提取的所有客户端启用某些挂钩,则必须将这些挂钩添加到您的代码库中,然后创建自己的脚本以将其复制到或链接到repo/.git/hooks/


4
但是如何调用复制脚本?
亚当·约翰斯

6
@AdamJohns它被用户/开发人员调用,可能是开发人员在setup.sh首次克隆存储库时运行的a形式。此后,例如,通过具有一个在每次拉动后都重新运行脚本以对其进行更新的钩子,可以自动进行钩子更新。因此,您不必依靠开发人员自己进行操作。
2013年

3

遗憾的是,但是从git 2.9开始,您可以将它们放入.githooks文件夹(如其他人所述)并运行:

git config --local core.hooksPath .githooks/

因此,无需符号链接或复制文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.