在一个git钩子是当前的工作目录保证在git仓库内?

在实验上,似乎git钩子运行与当前目录设置为存储库的根。 但是,在git文档中我看不到任何保证。 我应该依赖当前的工作目录来定位git仓库,还是有更好的方法来解决与钩子关联的git仓库?

它基于为环境variablesGIT_DIR设置的值。 当钩子开始运行时,它被设置到仓库的根目录。 许多钩子,尤其是那些从另一个仓库进行抽取的钩子,根据需要取消(重置)这个环境variables。

目前的答案似乎已经过时了。 截至2.9.0,文档陈述如下:

在Git调用一个钩子之前,它将其工作目录更改为非裸仓库中工作树的根目录或裸仓库中的$ GIT_DIR。

https://git-scm.com/docs/githooks/2.9.0

您可以使用环境variables$GIT_DIR$GIT_DIR指向.git目录。