当您在某个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
下面是一个bash函数,它将打印存储库名称(如果它已经正确设置):
__get_reponame ()
{
local gitdir=$(git rev-parse --git-dir)
if [ $(cat ${gitdir}/description) != "Unnamed repository; edit this file 'description' to name the repository." ]; then
cat ${gitdir}/description
else
echo "Unnamed repository!"
fi
}
解释:
local gitdir=$(git rev-parse --git-dir)
这将执行git rev-parse——git-dir,打印当前存储库的.git目录的完整路径。它将路径存储在$gitdir中。
if [ $(cat ${gitdir}/description) != "..." ]; then
这将执行cat ${gitdir}/description,打印当前存储库的.git/description的内容。如果您正确地命名了存储库,它将打印一个名称。否则,它将打印未命名的存储库;编辑这个文件'description'来命名存储库。
cat ${gitdir}/description
如果正确命名了repo,则打印内容。
else
否则……
echo "Unnamed repository!"
告诉用户回购是未命名的。
这个脚本中实现了类似的功能。
不幸的是,Git似乎没有内置这样的命令。但是您可以自己使用Git别名和一些shell魔法轻松地添加它。
正如这个答案所指出的,你可以使用git rev-parse——show- topllevel来显示当前git文件夹的根目录。
如果您想经常使用它,将其定义为别名可能更方便。为此,使用git配置别名。根”!Echo "$(git rev-parse——show-toplevel)"'。在此之后,您可以使用git root查看当前所在存储库的根文件夹。
如果您想使用根以外的其他子命令名称,只需替换alias的第二部分。在上面的命令中输入你想要的任何东西。
关于Git中别名的详细信息,请参见Git配置手册页。