Git拉取错误“无法更新本地引用”如何修复?

17

这是错误信息:

 error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
    From https://bitbucket.org/abc/abc
     ! [new branch]        master     -> origin/master  (unable to update local ref)

当我尝试拉取时,显示“完成但有错误,请参见上文”,我忘记了之前做了什么,所以在我进行拉取请求后出现了这个错误。我该怎么办?


该错误基本上意味着您的计算机上有多个git进程正在运行。 - zeekhuge
1个回答

42

看起来你本地的origin/master分支引用已经损坏或者是错误的。

首先,备份一份你的本地仓库。

以下是两种方法(据我所知):

  1. 删除master分支的引用,然后执行fetch命令(以获取最新的版本): cd <path-to-your-repo> rm .git/refs/remotes/origin/master git fetch

  2. 尝试使用git维护功能:

    • git gc --prune=now
    • git remote prune origin (如果不需要删除陈旧的远程跟踪分支等内容,这步骤可以省略)

注意:在进行上述操作之前备份是非常重要的,因为git gc pruning会永久删除一些无法访问的提交记录。理论上说,这些记录可能是有用的,以防万一出现错误。


1
请注意:我也遇到了这个问题,只有在将我的 git 更新到最新版本后,上述方法才起作用。因此,如果您尝试了上述方法仍然遇到麻烦,请确保您的 git 已经更新到最新版本。 - JaredH
@JaredH,是不是只有第二种方法在旧版本中无法工作 - 还是都有问题? - code_fodder
抱歉,但我不记得 @code_fodder。 - JaredH
@JaredH 哦,没关系 : ) - code_fodder
第二种方法对我有用。谢谢分享! - display name
在我的情况下,“git remote prune origin”是魔法词汇。谢谢! - lenborje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接