当您在某个Git目录下工作时,如何获得某个Git存储库中的Git存储库名称?有Git命令吗?

# I did check out bar repository and working in somewhere 
# under bar directory at this moment such as below.

$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar

当前回答

不幸的是,Git似乎没有内置这样的命令。但是您可以自己使用Git别名和一些shell魔法轻松地添加它。

正如这个答案所指出的,你可以使用git rev-parse——show- topllevel来显示当前git文件夹的根目录。

如果您想经常使用它,将其定义为别名可能更方便。为此,使用git配置别名。根”!Echo "$(git rev-parse——show-toplevel)"'。在此之后,您可以使用git root查看当前所在存储库的根文件夹。

如果您想使用根以外的其他子命令名称,只需替换alias的第二部分。在上面的命令中输入你想要的任何东西。

关于Git中别名的详细信息,请参见Git配置手册页。

其他回答

在git v2.7.0+中,为git-remote command引入了一个子命令get-url。

POSIX壳:

basename $(git remote get-url origin)

PowerShell:

Split-Path -Leaf (git remote get-url origin)

一般来说,你不能这样做。Git不关心你的Git存储库是如何命名的。例如,你可以重命名包含你的存储库的目录(一个带有.git子目录的目录),git甚至不会注意到它——一切都将继续工作。

但是,如果你克隆了它,你可以使用命令:

git remote show origin

来显示关于您从其克隆存储库的原始远程的大量信息,并且它将包含原始克隆URL。

但是,如果您使用git remote rm origin删除了到原始远程的链接,或者如果您使用git init创建了该存储库,则这些信息根本不可能获得——它不存在于任何地方。

不幸的是,Git似乎没有内置这样的命令。但是您可以自己使用Git别名和一些shell魔法轻松地添加它。

正如这个答案所指出的,你可以使用git rev-parse——show- topllevel来显示当前git文件夹的根目录。

如果您想经常使用它,将其定义为别名可能更方便。为此,使用git配置别名。根”!Echo "$(git rev-parse——show-toplevel)"'。在此之后,您可以使用git root查看当前所在存储库的根文件夹。

如果您想使用根以外的其他子命令名称,只需替换alias的第二部分。在上面的命令中输入你想要的任何东西。

关于Git中别名的详细信息,请参见Git配置手册页。

好吧,如果你指的是Git根目录名(包含.git目录的根目录名),你可以这样运行:

basename `git rev-parse --show-toplevel`

git rev-parse——show-toplevel部分提供了该目录的路径,basename删除了路径的第一部分。

回购全称:

git config --get remote.origin.url | grep -Po "(?<=git@github\.com:)(.*?)(?=.git)"