如何find当我可能在一个子目录中的本地git存储库的path

我正在寻找像git list-path打印关联存储库( .git目录)path的东西。

一些背景:我已经在我的一些项目/文件夹上设置了git版本控制。 其中一些是嵌套的,所以一个包含echo自己的仓库的目录是另一个跟另一个仓库跟踪的目录的子文件夹。

例如在我的主目录( ~ )我使用git来跟踪我的点文件,但在文件夹~/photo/meta-mix/我有另一个项目跟踪一个单独的存储库。 现在,我已经在目录~/photo/meta-match/build立了另一个项目,但是我不知道它是否有自己的仓库。 所以我想知道这个目录是否受版本控制,以及它的版本库在哪里。

我怎样才能做到这一点的git命令? git status可以给我

 nothing to commit 

这两种情况下,当~/photo/meta-match/有自己的仓库或者它只是指〜的仓库。

 git rev-parse --show-toplevel 

如果在git仓库中执行的话就足够了。
git rev-parse手册页:

 --show-toplevel 

显示顶层目录的绝对path。

对于旧版本(在1.7.x之前),其他选项列在“ 有一种方法可以在一个命令中获得git根目录? ”:

 git rev-parse --git-dir 

这将给出.git目录的path。


OP提到:

 git rev-parse --show-prefix 

它返回git回购根目录下的本地path。 (如果你在git回购根目录下是空的)


注意:为了简单地检查一下是否在git repo中,我发现下面的命令很有performance力:

 git rev-parse --is-inside-work-tree 

是的,如果你需要检查你是否在.git git-dir文件夹中:

 git rev-parse --is-inside-git-dir