【问题标题】:Are git hooks pushed to the remote when I 'git push'?当我“git push”时,git hooks 是否被推送到远程?
【发布时间】:2012-08-26 16:12:36
【问题描述】:

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

【问题讨论】:

标签: git githooks


【解决方案1】:

没有。钩子是每个存储库的,永远不会被推送。同样,repo 配置也不会被推送,.git/info 或其他一些东西中也不会推送任何内容。

推送和拉取只交换分支/标签和提交对象(以及任何可从提交中访问的内容,例如树、blob)。

【讨论】:

  • 有没有办法在中心放置钩子并将它们拉到每个克隆上并应用。
  • @f1wade 您可以添加一个.githooks 目录,该目录将受版本控制,然后从.git 内部进行符号链接或创建包装挂钩脚本。克隆不会自动连接到.githooks,但是一旦连接到你就可以推送和拉取新版本的钩子脚本。
【解决方案2】:

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

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

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

【讨论】:

  • 但是复制脚本是如何被调用的呢?
  • @AdamJohns 它被用户/开发者调用,可能以setup.sh 的形式出现,开发人员在第一次克隆存储库时会运行它。在此之后,挂钩的更新可以自动发生,方法是让一个挂钩重新运行脚本,在每次拉取后更新它们,例如。所以你不必依赖开发者自己来做。
【解决方案3】:

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

git config --local core.hooksPath .githooks/

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

【讨论】:

    猜你喜欢
    • 2013-04-08
    • 2014-01-25
    • 1970-01-01
    • 2013-03-28
    • 2013-03-07
    • 2017-06-26
    • 1970-01-01
    • 2021-07-07
    • 2019-05-09
    相关资源
    最近更新 更多