在预提交挂钩中使用$ GIT_DIR将返回.git目录的位置。即使未将其显式设置为任何内容,在pre-commit挂钩中使用它仍将返回您的位置。更新后,转移到Git 2.18似乎不再是这种情况了,我的预提交挂钩的行为也有所不同,并且无法按预期工作。知道如何解决这个问题吗?
答案 0 :(得分:5)
一些真正的详细信息可以在这里找到
https://public-inbox.org/git/20180826004150.GA31168@sigill.intra.peff.net/t/
出于问题的质量,我将尽我所能解释。
在未明确设置$ GIT_DIR的情况下,可以在Git 2.18之前的pre-commit挂钩中使用$ GIT_DIR,但这是意外的副作用,不是预期的行为。
GIT 2.18中的更改导致它停止工作。贡献者在链接中提到,获取.git目录位置的正确方法是预先提交钩子(或任何与此相关的钩子)是使用此git命令
git rev-parse --git-dir
他们将来可能会制作补丁,以使行为恢复到2.18之前的状态,但我建议不要依赖未记录和无意的行为
答案 1 :(得分:1)
解决方法是放
export GIT_DIR=${GIT_DIR-`git rev-parse --git-dir`}
最前面的钩子。