什么原因会导致我的 git 预提交和提交后挂钩没有运行?
(请注意:此问题不是重复;其他问题的答案是
它们是可执行的:
(请注意:此问题不是重复;其他问题的答案是
chmod +x
或“没有文件扩展名”,但这里都不是问题)它们是可执行的:
$ ls -alh .git/hooks/*-commit
-rwxr-xr-x … .git/hooks/post-commit
-rwxr-xr-x … .git/hooks/pre-commit
以下是它们各自的内容:
#!/bin/sh
echo "$0 正在运行"
exit 1
手动运行它们是可以工作的:
$ .git/hooks/pre-commit
.git/hooks/pre-commit 正在运行
但它们在提交时未被git
执行:
$ git commit -am "测试挂钩"
[master d17c0f38] 测试挂钩
1 file changed, 1 insertion(+)
这是使用 git 2.16.2。
core.hooksPath
,那么.git/hooks/
就不会被检查(即使core.hooksPath
缺少钩子脚本)。 - David Wolevercore.hooksPath
。但是,你发现运行git config --list --show-origin
会显示全局配置位置,现在你只想让每个项目始终运行pre-commit
钩子来执行相同的操作(在我的情况下,如果我忘记了,则运行测试)。我应该在哪里设置全局钩子路径,并如何告诉运行npm test -- --updateSnapshots
的脚本首先 cd 到特定项目的根目录? - Neil Gaetano LindberghooksPath
是可添加的。 - martins16321