78

我正在寻找诸如打印相关存储库(目录)git list-path的路径之类的东西。.git

一些背景知识:我已经在我的很多项目/文件夹上设置了 git 版本控制。其中一些是嵌套的,因此具有 echo own 存储库的一个目录是另一个目录的子文件夹,该目录由另一个存储库跟踪。

例如,在我的主目录~~/photo/meta-mix/现在,比如说,我在目录中建立了另一个项目 ~/photo/meta-match/,但我不知道它是否有自己的存储库。所以我想知道这个目录是否受版本控制以及它的存储库在哪里。

如何使用 git 命令执行此操作?git status可以给我

nothing to commit

这两种情况下,when~/photo/meta-match/都有自己的存储库或仅引用~.

4

1 回答 1

111
git rev-parse --show-toplevel

如果在 git repo 中执行就足够了。
git rev-parse手册页:

--show-toplevel

显示顶级目录的绝对路径。

对于旧版本(1.7.x 之前),其他选项列在“ Is there a way to get the git root directory in one command? ”中:

git rev-parse --git-dir

这将给出.git目录的路径。


OP提到:

git rev-parse --show-prefix

它返回 git repo 根目录下的本地路径。(如果您在 git repo 根目录下,则为空)


注意:为了简单地检查一个是否在 git repo 中,我发现以下命令非常有表现力:

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

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

git rev-parse --is-inside-git-dir
于 2012-09-06T06:15:04.283 回答