禁用单个git命令的钩子。

9

考虑到我需要在我的钩子脚本中使用git,我希望我的钩子脚本不会触发钩子。因此,我想按命令跳过钩子。

也就是说,我正在寻找一个选项,例如:

git --no-hooks some-git-command


3
对于提交钩子,你可以使用 --no-verify 选项。 - Philippe
3个回答

10
你可以使用以下命令来执行操作:

git -c core.hooksPath=/dev/null some-git-command

如果你不是在Unix系统上(没有/dev/null),那么你可以使用以下命令:

git -c core.hooksPath= some-git-command


你能否建议一种解决方案,以便有选择地禁用一个钩子(例如:*.git/hooks/post-commit*),但仍然可以通过命令行发出? - bloody
也许创建一个目录.git/all-hooks-but-one,其中包含除了你想要禁用的钩子之外的所有符号链接,然后添加使用git -c core.hooksPath=.git/all-hooks-but-one?但并不理想:一些操作系统不支持符号链接,并且在添加/删除/重命名新钩子时需要更新链接。 - Gabriel Devillers
记录一下 - 我找到了一个很有吸引力的解决方案:通过命令行控制的钩子。简单得像个鬼火:) 无论如何,对于你提供的通用方法,我给你点赞 +1 - bloody

4

另一个粗略的想法。

  1. 只需用符号 '#' 在文件 .git/hooks/pre-commit 中注释掉代码行。
  2. 运行单个或多个命令。
  3. 取消注释。
  4. 获益。

1

如果您使用的是Unix,并且想要禁用一个或多个钩子,只需执行以下操作:

chmod -x .git/hooks/MYHOOK ; git COMMAND ; chmod +x .git/hooks/MYHOOK; 

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