获取HEAD在远程存储库中指向的分支名称,而不克隆远程

时间:2017-01-29 19:16:12

标签: git version-control

我目前正在寻找一种解决方法来检索远程存储库的HEAD指向的分支名称。我不想克隆存储库。

我直接需要一些git命令来检索HEAD分支名称。我试过了 下面的命令,但它只提供SHA提交哈希HEAD,但我想要分支名称。

git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git <branch>

2 个答案:

答案 0 :(得分:3)

使用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被归类为&#34;管道&#34; Git命令,您可以安全地在脚本中使用它。

实施例

$ git ls-remote --symref https://github.com/Jubobs/gitdags HEAD | \
    head -1 | \
    awk '{print $2}'
refs/heads/master

答案 1 :(得分:1)

使用--symref选项。输出显示const INTERPOLATE_UNDEFINED = 0; const INTERPOLATE_AVERAGE = 1; const INTERPOLATE_BICUBIC = 2; const INTERPOLATE_BILINEAR = 3; const INTERPOLATE_FILTER = 4; const INTERPOLATE_INTEGER = 5; const INTERPOLATE_MESH = 6; const INTERPOLATE_NEARESTNEIGHBOR = 7; const INTERPOLATE_SPLINE = 8; 指向HEAD

master

简洁的语法是> git ls-remote --symref https://github.com/git/git-scm.com.git HEAD ref: refs/heads/master HEAD df55dcad82c2aa8dd7760aadf92b132af1deb8ec HEAD