如何获取遥控器/原点/ HEAD?

时间:2016-09-08 16:49:27

标签: git

我正在编写一个脚本,它将删除已经合并到默认远程分支的远程分支,但是我无法确定远程默认分支,因为它并不总是设置。

我知道如果我克隆一个回购,那么我会得到一个跟踪分支到listView.getSelectedItem()

但是,如果我将遥控器添加到现有存储库并获取,那么我将无法获得此远程跟踪分支。

This related question询问为什么它不存在,但我想知道如何添加它。

1 个答案:

答案 0 :(得分:2)

作为alexbclay implied in a comment,似乎没有真正的用途,但有几种方法可以找到它:

  • 如果您的Git足够新(并且服务器上的那个也是新的),git symbolic-ref会将其打印出来(加上其他所有内容,因此您可能需要添加更多选项来限制输出):

    foo

    完成此操作后,您可以使用git symbolic-ref refs/remotes/foo/HEAD refs/remotes/foo/master在本地创建引用(在这种情况下,假设使用git config --get-all remote.foo.fetch进行远程git clone:使用{{1}进行常规重命名如果它是非标准的,则找出重命名。

  • 如果失败,您可以使用方法git ls-remote使用:读取远程磁头(再次使用HEAD)并查看ID的ID是否唯一匹配{1}}针对所有实际的分支头。如果它是独一无二的,你知道它是哪一个。如果没有,您可以按照git clone的字母顺序选择第一个,或随机选择一个。 (如果远程的git clone被分离,因此我不确定HEAD会做什么,因此与任何远程分支都不匹配。查找可能会很有趣。)

  • 慢而简单:制作一个新的克隆,看看你为refs/remotes/origin/HEAD得到了什么。 :-)这基本上是前两种方法共同作用的。 (可能使用--reference来加速网络互动。)