我注意到常规的git repo会将.git
作为文件夹,而工作树repo会将.git
作为文件。这可靠吗?
是否有一个git命令将它们区分开?
答案 0 :(得分:2)
将.git
作为指向另一个存储库的文件称为gitlink,它不一定表示工作树。子模块也使用它们,它们也可以在其他不太常见的情况下使用。最初,符号链接是用于此目的的,但在Windows上效果不佳,在Windows上,符号链接需要特殊权限。
如果您想知道目录是在主存储库中还是在工作树中,则应比较git rev-parse --git-dir
和git rev-parse --git-common-dir
的输出。如果它们相同,则这是主存储库。如果它们不同,那就是工作树。
请注意,您必须使用最新的Git才能起作用。在(我相信)Git 2.13之前,git rev-parse --git-common-dir
在某些情况下提供了不正确的结果,这会影响此检查。除了升级Git的版本外,没有其他方法可以正确检查这些版本。