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

$GIT_DIR no longer set in pre-commit hooks

在预提交挂钩中使用 $GIT_DIR 将 return .git 目录的位置。即使它没有被明确设置为任何东西,在预提交挂钩中使用它仍然会 return 你的位置。更新后,移至 Git 2.18,这似乎不再是这种情况,我的预提交挂钩的行为有所不同,无法按预期工作。知道如何解决这个问题吗?

可以在此处找到一些非常详细的信息

https://public-inbox.org/git/20180826004150.GA31168@sigill.intra.peff.net/t/

为了问题的质量,我会尽力解释。

使用 $GIT_DIR,当它没有明确设置时,在预提交挂钩中确实在 Git 2.18 之前工作,但是这是一个意外的副作用而不是预期的行为。

GIT 2.18 中的更改导致此功能停止工作。在 link 中,一位贡献者提到在预提交挂钩(或与此相关的任何挂钩)中获取 .git 目录位置的正确方法是使用此 git命令

git rev-parse --git-dir

他们将来可能会制作补丁 return 2.18 之前的行为,但我建议不要依赖未记录和意外的行为

修复方法是,将

export GIT_DIR=${GIT_DIR-`git rev-parse --git-dir`}

在你的钩子前面。