Git 如何获取遥控器/原点/磁头?
我正在编写一个脚本,该脚本将删除已经合并到默认远程分支中的远程分支,但是我在确定远程默认分支时遇到了问题,因为它并不总是被设置的 我知道如果我克隆了回购协议,那么我会得到一个到Git 如何获取遥控器/原点/磁头?,git,Git,我正在编写一个脚本,该脚本将删除已经合并到默认远程分支中的远程分支,但是我在确定远程默认分支时遇到了问题,因为它并不总是被设置的 我知道如果我克隆了回购协议,那么我会得到一个到remotes/origin/HEAD 但是,如果我将远程对象添加到现有存储库并获取,那么我将无法获取此远程跟踪分支 询问它为什么不存在,但我想知道如何添加它。因为,这似乎没有实际用途,但有几种方法可以找到它: 如果您的Git足够新(服务器上的Git也是如此),Git ls remote--symref将打印出来(以及其
remotes/origin/HEAD
但是,如果我将远程对象添加到现有存储库并获取,那么我将无法获取此远程跟踪分支
询问它为什么不存在,但我想知道如何添加它。因为,这似乎没有实际用途,但有几种方法可以找到它:
- 如果您的Git足够新(服务器上的Git也是如此),
将打印出来(以及其他所有内容,因此您可能需要添加更多选项以限制输出): 一旦有了它,就可以使用Git ls remote--symref
(在这种情况下,假设remotegit symbolic ref
,使用foo
:遵循通常的重命名,使用git symbolic ref-refs/remotes/foo/HEAD refs/remotes/foo/master
,以确定重命名(如果它是非标准的)git config--get all remote.foo.fetch
- 如果失败,您可以使用方法
使用:读取远程磁头(再次使用git clone
)查看git ls remote
的ID是否与所有实际分支头唯一匹配。如果唯一,您知道它是哪一个。如果不唯一,您可以像HEAD
那样按字母顺序选择第一个,或者随机选择一个。(如果远程设备的git clone
被分离,因此与远程设备的任何分支都不匹配,我不确定头部
会做什么。这可能是一个有趣的发现。)git clone
- 缓慢但简单:制作一个新的克隆,看看你能得到什么
:-)这基本上是前两种方法的结合。(也许可以使用refs/remotes/origin/HEAD
来加速网络交互。)--reference
- 如果您的Git足够新(服务器上的Git也是如此),
将打印出来(以及其他所有内容,因此您可能需要添加更多选项以限制输出): 一旦有了它,就可以使用Git ls remote--symref
(在这种情况下,假设remotegit symbolic ref
,使用foo
:遵循通常的重命名,使用git symbolic ref-refs/remotes/foo/HEAD refs/remotes/foo/master
,以确定重命名(如果它是非标准的)git config--get all remote.foo.fetch
- 如果失败,您可以使用方法
使用:读取远程磁头(再次使用git clone
)查看git ls remote
的ID是否与所有实际分支头唯一匹配。如果唯一,您知道它是哪一个。如果不唯一,您可以像HEAD
那样按字母顺序选择第一个,或者随机选择一个。(如果远程设备的git clone
被分离,因此与远程设备的任何分支都不匹配,我不确定头部
会做什么。这可能是一个有趣的发现。)git clone
- 缓慢但简单:制作一个新的克隆,看看你能得到什么
:-)这基本上是前两种方法的结合。(也许可以使用refs/remotes/origin/HEAD
来加速网络交互。)--reference
git ls remote--symref
正是我要找的。我已经更新了我的问题,提供了我为什么需要这个的提示。谢谢torek,git ls remote--symref
正是我想要的。我已经更新了我的问题,提供了一个关于我为什么需要这个的提示。
$ git ls-remote --symref
...
ref: refs/heads/master HEAD
...