当我可能在子目录中时,如何找到本地git存储库的路径

hal*_*leo 70 git environment path

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

一点背景:我已经在我的很多项目/文件夹中设置了git版本控件.其中一些是嵌套的,因此一个带有echo自己的存储库的目录是另一个使用另一个存储库跟踪的目录的子文件夹.

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

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

nothing to commit
Run Code Online (Sandbox Code Playgroud)

这两种情况下,何时~/photo/meta-match/拥有自己的存储库或何时只是引用存储库~.

Von*_*onC 92

git rev-parse --show-toplevel
Run Code Online (Sandbox Code Playgroud)

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

--show-toplevel
Run Code Online (Sandbox Code Playgroud)

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

对于旧版本(1.7.x之前)," 有没有办法在一个命令中获取git根目录? " 中列出了其他选项:

git rev-parse --git-dir
Run Code Online (Sandbox Code Playgroud)

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


OP提到:

git rev-parse --show-prefix
Run Code Online (Sandbox Code Playgroud)

它返回git repo根目录下的本地路径.(如果你在git repo root那个空)


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

git rev-parse --is-inside-work-tree
Run Code Online (Sandbox Code Playgroud)

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

git rev-parse --is-inside-git-dir
Run Code Online (Sandbox Code Playgroud)

  • @MudassirRazvi,因为它期望一个工作树,而裸露的回购没有.有关裸仓库顶级文件夹,请参阅http://stackoverflow.com/a/5584084/6309. (2认同)

归档时间:

查看次数:

87207 次

最近记录:

13 年,1 月 前