Linux git使用什么机制来查找其存储库?
我有几个git存储库。其中一个在$PATH中。今天,我不小心移动到了一个我以为有git存储库但没有的目录Linux git使用什么机制来查找其存储库?,linux,git,Linux,Git,我有几个git存储库。其中一个在$PATH中。今天,我不小心移动到了一个我以为有git存储库但没有的目录 cd 因此,当我输入git状态时,输出是混乱的 git似乎在$PATH中找到了存储库,因此在本例中,git在~/bin中找到了存储库,它位于我的路径中 git是通过查找$PATH来搜索存储库,还是有其他搜索机制在起作用?我找不到关于实际细节的确切参考,但我们可以从中推断出大部分信息 Git按优先顺序在存储库中查找其位置: 在--git dir参数提供的目录中 在由GIT\u DIR环境变量
cd
因此,当我输入git状态时,输出是混乱的
git似乎在$PATH中找到了存储库,因此在本例中,git在~/bin中找到了存储库,它位于我的路径中
git是通过查找$PATH来搜索存储库,还是有其他搜索机制在起作用?我找不到关于实际细节的确切参考,但我们可以从中推断出大部分信息 Git按优先顺序在存储库中查找其位置:
- 在
参数提供的目录中--git dir
- 在由
环境变量提供的目录中GIT\u DIR
- 在子目录
或当前目录中.git
- 在祖先目录的子目录
中。环境变量.git
和跨文件系统的GIT\u目录
设置了一些约束条件GIT\u发现
- 在
参数提供的目录中--git dir
- 在由
环境变量提供的目录中GIT\u DIR
- 在子目录
或当前目录中.git
- 在祖先目录的子目录
中。环境变量.git
和跨文件系统的GIT\u目录
设置了一些约束条件GIT\u发现
GIT_DIR
环境变量可用并设置其值,则使用该变量来定位存储库
请注意,在这两种情况下均未进行搜索/启发式- either an objects/ directory _or_ the proper
GIT_OBJECT_DIRECTORY environment variable
- a refs/ directory
- either a HEAD symlink or a HEAD file that is formatted as
a proper "ref:", or a regular file HEAD that has a properly
formatted sha1 object name.
/
或Windows上驱动器的根被击中为止(因此无需提升)。默认情况下,Git也不会跨越当前目录的文件系统边界$PATH
:此目录仅用于查找可执行程序,Git与之无关。根据,Git在查找其对象存储时如下所示:
GIT_DIR
环境变量可用并设置其值,则使用该变量来定位存储库
请注意,在这两种情况下均未进行搜索/启发式- either an objects/ directory _or_ the proper
GIT_OBJECT_DIRECTORY environment variable
- a refs/ directory
- either a HEAD symlink or a HEAD file that is formatted as
a proper "ref:", or a regular file HEAD that has a properly
formatted sha1 object name.
/
或Windows上驱动器的根被击中为止(因此无需提升)。默认情况下,Git也不会跨越当前目录的文件系统边界正如您所看到的,不涉及任何
$PATH
:此目录仅用于查找可执行程序,Git与之无关。它会上升一个级别,直到找到一个.Git,否则它将无法上升。它与$PATH无关。git
不使用$PATH
查找存储库,但它确实有方法。在这里复制有点太长,但是在git手册页中查找“环境变量”。从GIT_开始搜索您自己的环境中的变量可能会更快。这些看起来像是我的答案,所以希望您能回答这篇文章。谢谢。好吧,如果你坚持的话……它会上升一个级别直到找到一个.git,否则它就没有级别了。它与$PATH无关。git
不使用$PATH
查找存储库,但它确实有方法。在这里复制有点太长,但是在git手册页中查找“环境变量”。从GIT_开始搜索您自己的环境中的变量可能会更快。这些看起来像是我的答案,所以希望您能回答这篇文章。谢谢。如果你坚持的话。。。