我目前正在寻找一种解决方法来检索远程存储库的HEAD指向的分支名称。我不想克隆存储库。
我直接需要一些git命令来检索HEAD分支名称。我试过了 下面的命令,但它只提供SHA提交哈希HEAD,但我想要分支名称。
git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git <branch>
答案 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
。