当我'git push'时,git hooks被推到了遥控器吗?

sla*_*acy 79 git githooks

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

Lil*_*ard 65

没有.钩子是每个存储库,永远不会被推送.类似地,repo配置既不会被推送,也不会被推送.git/info,或者其他许多东西.

推送和拉取仅交换分支/标签和提交对象(以及从提交可到达的任何内容,例如树,blob).

  • 有没有办法让钩子在中央并让它们被拉到每个克隆上并应用. (13认同)
  • @ f1wade您可以添加一个.githooks目录,该目录将由版本控制,然后通过sym-link或从.git内部创建包装钩子脚本。克隆不会自动加入`.githooks`,但是一旦加入,您就可以推送和拉出新版本的钩子脚本。 (2认同)

Mar*_*nde 43

不,git hooks不会被推或拉,因为它们不是存储库代码的一部分.

有关简单客户端和服务器端挂钩的列表,请参阅文档.

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

  • @AdamJohns它由用户/开发人员调用,可能是在他们第一次克隆存储库时dev运行的`setup.sh`形式.在此之后,例如,通过在每次拉动后重新运行脚本更新它们的钩子,可以自动更新钩子.因此,您不必依赖开发人员自己完成. (5认同)
  • 但是如何调用复制脚本? (3认同)

Mar*_*ano 13

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

git config --local core.hooksPath .githooks/
Run Code Online (Sandbox Code Playgroud)

所以不需要符号链接或复制文件。