运行git commit -a时git pre-commit hook没有运行

时间:2017-08-18 06:14:49

标签: git githooks

我有一个本地预提交钩子,它执行,并在我运行时按预期停止提交 git commit

另外,正如预期的那样,我可以在运行git commit -n ...

时绕过钩子

然而,运行git commit -am "My message"或者确实只是git commit -a似乎绕过钩子并允许处理提交。

知道为什么会这样吗?

修改:挂钩。

PROJECT_ROOT=`git rev-parse --show-toplevel`
CHANGED=`git diff --stat -- $PROJECT_ROOT/myProj/myfile.ext | wc -l`
if [ $CHANGED -gt 0 ];
then
    echo "myfile.ext file has changed, are you sure you want to commit"
    echo "Use the -n parameter to process this commit."
    exit 1
fi

1 个答案:

答案 0 :(得分:0)

所以,这是用户错误..

钩子在两个实例中都在运行,但是当我提供-a命令时,我用来检测文件中的更改的逻辑并不起作用。

检查远程仓库是否有效。

CHANGED=`git diff origin/master --stat -- $PROJECT_ROOT/myProj/myfile.ext | wc -l`

编辑:感谢@torek,检查更改的更合适的方法是:

CHANGED=`git diff --cached --stat -- $PROJECT_ROOT/myProj/myfile.ext | wc -l`