协慌网

登录 贡献 社区

有没有一种方法可以在一个命令中获取 git 根目录?

Mercurial 可以通过以下方式打印根目录(包含. hg)

hg root

git 中是否有等效的东西来获取包含. git 目录的目录?

答案

是的:

git rev-parse --show-toplevel

如果要直接复制 Git 命令,可以创建一个别名

git config --global alias.root 'rev-parse --show-toplevel'

现在git root将像hg root一样起作用。


:在一个子模块,这将显示该子模块的根目录下,而不是父库。如果您使用的 Git> = 2.13 或更高版本,则子模块可以通过一种方式显示超级项目的根目录。如果您的 git 早于该版本, 请参阅其他答案。

git-configman页(在Alias下)说:

如果别名扩展名带有感叹号作为前缀,它将被视为 shell 命令。 [...] 注意,shell 命令将从存储库的顶级目录执行,该目录不一定是当前目录。

因此,在 UNIX 上,您可以执行以下操作:

git config --global --add alias.root '!pwd'

--show-toplevel是最近才添加到git rev-parse还是为什么没有人提及它?

git rev-parse手册页:

--show-toplevel
       Show the absolute path of the top-level directory.