我正在编写一个脚本,它将删除已经合并到默认远程分支的远程分支,但是我无法确定远程默认分支,因为它并不总是设置。
我知道如果我克隆一个回购,那么我会得到一个跟踪分支到listView.getSelectedItem()
但是,如果我将遥控器添加到现有存储库并获取,那么我将无法获得此远程跟踪分支。
This related question询问为什么它不存在,但我想知道如何添加它。
答案 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
来加速网络互动。)