Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何获取遥控器/原点/磁头?_Git - Fatal编程技术网

Git 如何获取遥控器/原点/磁头?

Git 如何获取遥控器/原点/磁头?,git,Git,我正在编写一个脚本,该脚本将删除已经合并到默认远程分支中的远程分支,但是我在确定远程默认分支时遇到了问题,因为它并不总是被设置的 我知道如果我克隆了回购协议,那么我会得到一个到remotes/origin/HEAD 但是,如果我将远程对象添加到现有存储库并获取,那么我将无法获取此远程跟踪分支 询问它为什么不存在,但我想知道如何添加它。因为,这似乎没有实际用途,但有几种方法可以找到它: 如果您的Git足够新(服务器上的Git也是如此),Git ls remote--symref将打印出来(以及其

我正在编写一个脚本,该脚本将删除已经合并到默认远程分支中的远程分支,但是我在确定远程默认分支时遇到了问题,因为它并不总是被设置的

我知道如果我克隆了回购协议,那么我会得到一个到
remotes/origin/HEAD

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

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

因为,这似乎没有实际用途,但有几种方法可以找到它:

  • 如果您的Git足够新(服务器上的Git也是如此),
    Git ls remote--symref
    将打印出来(以及其他所有内容,因此您可能需要添加更多选项以限制输出):

    一旦有了它,就可以使用
    git symbolic ref
    (在这种情况下,假设remote
    foo
    ,使用
    git symbolic ref-refs/remotes/foo/HEAD refs/remotes/foo/master
    :遵循通常的重命名,使用
    git config--get all remote.foo.fetch
    ,以确定重命名(如果它是非标准的)

  • 如果失败,您可以使用方法
    git clone
    使用:读取远程磁头(再次使用
    git ls remote
    )查看
    HEAD
    的ID是否与所有实际分支头唯一匹配。如果唯一,您知道它是哪一个。如果不唯一,您可以像
    git clone
    那样按字母顺序选择第一个,或者随机选择一个。(如果远程设备的
    头部
    被分离,因此与远程设备的任何分支都不匹配,我不确定
    git clone
    会做什么。这可能是一个有趣的发现。)

  • 缓慢但简单:制作一个新的克隆,看看你能得到什么
    refs/remotes/origin/HEAD
    :-)这基本上是前两种方法的结合。(也许可以使用
    --reference
    来加速网络交互。)

正如所说,这似乎没有什么实际用途,但有几种方法可以找到它:

  • 如果您的Git足够新(服务器上的Git也是如此),
    Git ls remote--symref
    将打印出来(以及其他所有内容,因此您可能需要添加更多选项以限制输出):

    一旦有了它,就可以使用
    git symbolic ref
    (在这种情况下,假设remote
    foo
    ,使用
    git symbolic ref-refs/remotes/foo/HEAD refs/remotes/foo/master
    :遵循通常的重命名,使用
    git config--get all remote.foo.fetch
    ,以确定重命名(如果它是非标准的)

  • 如果失败,您可以使用方法
    git clone
    使用:读取远程磁头(再次使用
    git ls remote
    )查看
    HEAD
    的ID是否与所有实际分支头唯一匹配。如果唯一,您知道它是哪一个。如果不唯一,您可以像
    git clone
    那样按字母顺序选择第一个,或者随机选择一个。(如果远程设备的
    头部
    被分离,因此与远程设备的任何分支都不匹配,我不确定
    git clone
    会做什么。这可能是一个有趣的发现。)

  • 缓慢但简单:制作一个新的克隆,看看你能得到什么
    refs/remotes/origin/HEAD
    :-)这基本上是前两种方法的结合。(也许可以使用
    --reference
    来加速网络交互。)


为什么要设置遥控器的头部?在这个问题中有一些设置遥控器头部的选项:@Alex,我不是在设置它,我是在取回它。明白了。那么这个如何:第二个答案在我有限的测试用例中有效。为什么要设置遥控器头部?我有一些设置遥控器头部的选项n这个问题:@Alex,我不是在设置它,我是在取回它。明白了。那么这个问题如何:第二个答案在我有限的测试用例中有效。谢谢torek,
git ls remote--symref
正是我要找的。我已经更新了我的问题,提供了我为什么需要这个的提示。谢谢torek,
git ls remote--symref
正是我想要的。我已经更新了我的问题,提供了一个关于我为什么需要这个的提示。
$ git ls-remote --symref
...
ref: refs/heads/master  HEAD
...