【问题标题】:Git reference conflicts between branches (unable to update local branch)分支之间的 Git 引用冲突(无法更新本地分支)
【发布时间】:2013-11-02 02:43:43
【问题描述】:

我在尝试 git fetch 远程分支时遇到以下错误:

错误:Ref refs/origin/remotes/my-branch 位于 some-hash 但预期为 another-hash 来自 github.com:my-repositorysome-hash my-branch -> origin/my-branch(无法更新本地参考)

我不知道刚才到底发生了什么。有什么启示吗?

【问题讨论】:

  • 是否有人(可能是您自己)将修改后的历史记录从其他地方强制推送到远程存储库?
  • 在同一行中,您可以查看git log --pretty=oneline origin/my-branch 以查看您自己存储库中的历史记录,然后查看 github 中的历史记录以查看那里的历史记录。如果它们不匹配,则意味着历史已被您或其他人强行更改。这很糟糕,改变历史的人也很糟糕。
  • 有人搞砸了。你工作的地方经常发生 git 相关的问题吗?如果是这样,那么问:我们需要 git 的好处吗?如果是,请问:我们是否愿意花时间让每个人都接受培训?如果不接受这个,或者前面的,那么你的悟性就会自然而然地到来。
  • 我找到了谁搞砸了
  • 我在 SourceTree 中看到了这个错误,所以立即跑到 StackOverflow。在阅读了上面的答案(毫无疑问都是正确的)之后,我回到 SourceTree 并再次按下“Pull”。一切正常。吉特小精灵。他们今天早上很慢。

标签: git github


【解决方案1】:

我找到了这个错误的原因:

有人创建了另一个名称相同但大小写不同的分支。

发生了什么?

Windows 版 Git 不区分大小写。所以,事情变得疯狂了! Git 无法区分彼此,误认了每个人的头部哈希值。

解决方案:

把邪恶从根源上斩断。删除了错误的远程分支,一切都很好。

【讨论】:

  • 这个,我的团队负责人刚刚用一个开发和开发分支杀死了我们。 !!
【解决方案2】:

对于其他到达这里的谷歌用户:this is also another less drastic approach

导航到.git\refs\remotes\origin 目录 - 删除主文件,

然后再做一个git pull,就同步成功了。

【讨论】:

  • 我知道这已经晚了几年,但我只是想补充一点,我有多个裁判处于糟糕的状态。我的恰好位于两个位置: .git/refs/remotes/origin 和 .git/refs/tags (标签也很糟糕)。我删除了错误的参考并再次成功获取。我想你可以直接删除所有的 refs,然后重新获取,但我只是删除了错误指定的那些。
  • 这解决了问题,ref 文件全为零,而不是分支的实际哈希。
  • 谢谢,您的解决方案帮助了我。
  • 希望我能再次投票。这帮助了我两次。
  • 这行得通。感谢您的解决方案。 PS:删除.git\refs\remotes\origin文件夹内的所有文件并做一个git fetch
猜你喜欢
  • 2022-11-03
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2019-02-16
  • 2020-04-18
相关资源
最近更新 更多