我目前正在寻找一种解决方法来检索远程存储库 HEAD 指向的分支名称。我不想克隆存储库。
我直接需要一些 git 命令来检索 HEAD 分支名称。我试过 下面的命令,但它只提供 SHA 提交哈希 HEAD,但我想要分支名称。
git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git <branch>
git ls-remote --symref
您不需要克隆远程存储库来(以编程方式)识别该远程存储库中的当前分支。
ls-remote
有一个方便的选项,称为 --symref
:
在显示符号引用时,除了它指向的对象之外,还显示它指向的底层引用。目前,upload-pack 仅显示 symref HEAD,因此它将是 ls-remote 显示的唯一一个。
有了这些知识,你就可以简单地运行
git ls-remote --symref <remote_repo_url> HEAD
并使用一些
sed
-foo 提取当前分支的名称;因为 ls-remote
被归类为“管道”Git 命令,因此您可以在脚本中安全地使用它。
$ git ls-remote --symref https://github.com/Jubobs/gitdags HEAD | \
head -1 | \
awk '{print $2}'
refs/heads/master
--symref
选项。输出显示 HEAD
指向 master
。
> git ls-remote --symref https://github.com/git/git-scm.com.git HEAD
ref: refs/heads/master HEAD
df55dcad82c2aa8dd7760aadf92b132af1deb8ec HEAD
简洁的语法是
git ls-remote --symref <repository> <refs>
。
旁白:如果您已经克隆了存储库,则只需运行
git branch -a
即可。例如,如果其输出包含 remotes/origin/HEAD -> origin/xxx
,则远程 HEAD 指向分支 xxx
。