$ GIT_DIR不再在预提交挂钩中设置

时间:2018-11-02 15:12:15

标签: git githooks

在预提交挂钩中使用$ GIT_DIR将返回.git目录的位置。即使未将其显式设置为任何内容,在pre-commit挂钩中使用它仍将返回您的位置。更新后,转移到Git 2.18似乎不再是这种情况了,我的预提交挂钩的行为也有所不同,并且无法按预期工作。知道如何解决这个问题吗?

2 个答案:

答案 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`}

最前面的钩子。