git提交前和提交后钩子未运行

ibrsph3r  于 2023-02-17  发布在  Git
关注(0)|答案(5)|浏览(239)

什么会导致我的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 IS RUNNING" exit 1
手动运行它们可以:
$ .git/hooks/pre-commit .git/hooks/pre-commit IS RUNNING
但是它们不是由git在提交时运行的:
$ git commit -am "Test hooks" [master d17c0f38] Test hooks 1 file changed, 1 insertion(+)
这是在git 2.16.2中实现的

nwsw7zdq

nwsw7zdq1#

例如,我看到配置core.hooksPath被设置为$GIT_DIR/hooks之外的另一个路径,使该文件夹中的钩子被忽略。
检查您的git config core.hooksPath输出,更一般地说,检查git config -l是否有任何异常设置。
请注意,git commit -n would skip the pre-commit hook .

编辑作者:wolever:

我已经将此代码添加到core.hooksPath目录中的脚本中,如果存在,它将运行repo的钩子:

#!/bin/sh
set -eu
hook_name="$(basename "$0")"
hook_script=".git/hooks/$hook_name"
[ -e "$hook_script" ] && "$hook_script"
exit 0
eit6fx6z

eit6fx6z2#

在我的例子中,projRootDir/.git/config中的core.hooksPath设置不正确,从配置文件中删除条目就可以了

vx6bjr1n

vx6bjr1n3#

我只想补充一点,如果你对你的git钩子的路径有任何困惑,那么用你的终端打开你的git钩子文件,从你的终端运行pwdcd来获得绝对路径,并将其用于你的hooksPath =

icnyk63a

icnyk63a4#

检查您的Git版本是否高于2.9。

pxq42qpu

pxq42qpu5#

在项目(资源库)根目录中执行此命令修复了问题

git config --local core.hooksPath .git/hooks

相关问题