什么会导致我的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中实现的
5条答案
按热度按时间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的钩子:eit6fx6z2#
在我的例子中,
projRootDir/.git/config
中的core.hooksPath
设置不正确,从配置文件中删除条目就可以了vx6bjr1n3#
我只想补充一点,如果你对你的git钩子的路径有任何困惑,那么用你的终端打开你的git钩子文件,从你的终端运行
pwd
或cd
来获得绝对路径,并将其用于你的hooksPath =
icnyk63a4#
检查您的Git版本是否高于2.9。
pxq42qpu5#
在项目(资源库)根目录中执行此命令修复了问题