实验上似乎git hooks在当前目录设置为存储库的根目录的情况下运行。但是,我在git文档中看不到任何保证。我应该依赖当前的工作目录来定位git存储库,还是有更好的方法来计算与钩子相关联的git存储库?
答案 0 :(得分:41)
目前的答案似乎已过时。从2.9.0开始,文档陈述如下:
在Git调用钩子之前,它将其工作目录更改为 非裸存储库中工作树的根,或者 $ GIT_DIR在一个裸存储库中。
答案 1 :(得分:39)
它基于为环境变量GIT_DIR
设置的值。当钩子开始运行时,它被设置为存储库的根目录。许多钩子,特别是那些从另一个仓库中拉出来的钩子,根据需要取消(并重置)这个环境变量。
答案 2 :(得分:3)
您可以使用环境变量$GIT_DIR
。 $GIT_DIR
指向.git
目录。