git - $GIT_DIR 不再设置在预提交 Hook 中

标签 git githooks

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

最佳答案

一些非常详细的信息可以在这里找到

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

为了问题的质量,我将尽我所能解释。

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

GIT 2.18 中的更改导致它停止工作。在链接中,贡献者提到在预提交 Hook (或任何 Hook )中获取 .git 目录位置的正确方法是使用此 git 命令

git rev-parse --git-dir

将来,他们可能会生成一个补丁以将行为恢复到 2.18 之前的状态,但我建议不要依赖未记录和意外的行为

关于git - $GIT_DIR 不再设置在预提交 Hook 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121208/

相关文章:

使用 GIT_SSH 时 git ls-remote 挂起

git - 锁定分支但允许 gitlab merge 请求

git - 如何仅在子目录中运行 husky 预提交

git - 无法引入 git 钩子(Hook)(bash 脚本)

每个分支的 Git 提交钩子(Hook)

git - 有没有办法让本地分支不可变?

git - 最佳(在您看来)GIT 工作流程,适用于按需发布的情况(在大多数情况下一次 1-2 张票)

Xcode 源代码控制 github 上错误的用户名

git - 有没有办法配置 git commit 的输出?

git - 如何在 git 中编辑任何提交的提交消息?