微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您的配置指定与从遥控器,但没有这样的参考被提取?

如何解决您的配置指定与从遥控器,但没有这样的参考被提取?

这意味着什么

您的上游(您调用的远程origin设备)不再有,或者可能从未有过(仅从这些信息中无法判断)名为feature/Sprint4/ABC-123-Branch. 有一个特别常见的原因:有人(可能不是你,或者你记得)删除了另一个 Git 存储库中的分支。

该怎么办

这取决于你 想要 什么。请参阅下面的讨论部分。你可以:

  • 在远程创建或重新创建分支,或者
  • 删除您的本地分支,或
  • 你能想到的任何其他东西。

讨论

您必须正在运行git pull(如果您正在运行git merge,您将收到不同的错误消息或根本没有错误消息)。

当您运行时,您的 Git 会根据您的配置部分下的行git fetch联系另一个 Git 。该 Git 运行一个命令 ( ),除其他外,该命令向 您的 Git 发送所有分支的列表。你可以用它来看看它是如何工作的(试试看,它很有教育意义)。这是我在 Git 存储库上运行它时得到的片段:url``[remote "origin"]``upload-pack __git ls-remote``git

$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f    HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b    refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f    refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1    refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6    refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638    refs/heads/todo
[snip]

这些refs/heads/条目列出了远程上存在的所有分支,1以及相应的提交 ID(对于refs/tags/条目,ID 可能指向标记对象而不是提交)。

您的 Git 采用这些分支名称中的每一个,并根据同一部分中的行对其进行 更改在这种情况下,您的 Git 会替换为,例如。您的 Git 对遇到的每个分支名称都执行此操作。fetch``remote``refs/heads/master``refs/remotes/origin/master

它还在特殊文件中记录了原始名称FETCH_HEAD(如果您查看自己的.git目录,可以看到此文件)。此文件保存获取名称和 ID。

git pull命令是一种方便快捷的方式:它git fetch在适当的遥控器上运行,然后git merge(或者,如果有这样的指示, )使用任何所需的参数来按照该部分git rebase的指示进行合并(或变基) 。[branch ...]在这种情况下,您的[branch "feature/Sprint4/ABC-123-Branch"]部分说从 fetch origin,然后与在 name 下找到的任何 ID 合并refs/heads/feature/Sprint4/ABC-123-Branch

由于没有以该名称找到任何东西,因此git pull抱怨并停止。

如果您将此作为两个单独的步骤运行,git fetch然后git merge(或git rebase),您的 Git 将查看缓存remotes/origin/的远程跟踪分支,以查看要合并或变基的内容。如果一次有 这样 的分支,您可能仍然拥有远程跟踪分支。在这种情况下,您不会收到错误消息。如果从来没有这样的分支,或者如果你已经运行git fetch--prune删除了死的远程跟踪分支),所以你没有相应的远程跟踪分支,你会得到一个投诉,但它会引用它origin/feature/Sprint4/ABC-123-Branch

,我们都可以得出结论,feature/Sprint4/ABC-123-Branch现在远程命名上不存在origin

它可能曾经存在过,并且您可能从远程跟踪分支创建了本地分支。如果是这样,您可能仍然拥有远程跟踪分支。您可能会调查谁从远程删除了分支,以及为什么,或者您可能只是推送一些东西来重新创建它,或者删除您的远程跟踪分支和/或您的本地分支。


1好吧,至少它要 承认的一切。 但除非他们特别隐藏了一些参考文献,否则该列表包括所有内容

一个新的 fetch 协议可以避免列出 所有内容 ,并且只列出 Git 说它正在寻找的名称。这可以帮助具有大量分支和/或标签的存储库。但是,如果您的 Git 对所有可能的名称感兴趣,您仍然会在此处获得所有名称

解决方法

我收到这个错误拉:

您的配置指定与远程的 ref ‘refs/heads/feature/Sprint4/ABC-123-Branch’ 合并,但没有获取这样的 ref。

任何其他分支都不会出现此错误。
这个分支的特别之处在于它是从另一个分支的先前提交创建的。

我的配置文件如下所示:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = <url here>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "new-develop"]
    remote = origin
    merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
    remote = origin
    merge = refs/heads/feature/Sprint4/ABC-123-Branch

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。