Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
预提交钩子期间的git diff不会导致git存储库_Git_Bash_Githooks - Fatal编程技术网

预提交钩子期间的git diff不会导致git存储库

预提交钩子期间的git diff不会导致git存储库,git,bash,githooks,Git,Bash,Githooks,我正在尝试用git构建一个预提交脚本。在该脚本中,如果某个文件夹已更改,我计划运行任务。为了测试,在我的脚本中 git diff --cached | grep -q "^my/folder" 这导致 Not a git repository To compare two paths outside a working tree: usage: git diff [--no-index] <path> <path> 不是git存储库 要比较工作树外的两条路径,请执行以

我正在尝试用git构建一个预提交脚本。在该脚本中,如果某个文件夹已更改,我计划运行任务。为了测试,在我的脚本中

git diff --cached | grep -q "^my/folder"
这导致

Not a git repository
To compare two paths outside a working tree:
usage: git diff [--no-index] <path> <path>
不是git存储库
要比较工作树外的两条路径,请执行以下操作:
用法:git diff[--无索引]

pwd
说我在正确的目录中,
$GIT\u DIR
.GIT
。我被引导相信,
--cached
是让这个在钩子中工作的特殊调味品。有办法做到这一点吗?

即使设置了GIT_DIR,我还是会尝试:

git --git-dir=/full/path/to/repo/.git --work-tree=/full/path/to/rpeo diff --cached |grep -q "^my/folder" 

这样,您就可以确定钩子是在它应该执行的地方执行的。

unset GIT\u DIR
清除了它。我很失望,
--git dir
没有。我试过了。没有变化。最后,强制取消设置
GIT_DIR
修复了它。@Hounshell您确定要通过
--工作树
选项吗
--git dir
可以工作,但是您还需要传递
--work tree
。我刚刚注意到您的顺序不同。我改了那个顺序,看起来效果不错。但这实际上引发了另一个问题。我的脚本调用了许多其他脚本,它们都需要目录参数,这太痛苦了。所以最终你的答案是对的,但我不会用它;-)我最终坚持使用这种方法,因为子脚本也需要这样做。因为脚本是在子shell中运行的,所以我对此很满意。