我只有分支主和我得到这个错误,每次我尝试“git拉”:

error: Couldn't set refs/remotes/origin/master
From /var/lib/git/xxx/project
 ! a0f80ea..49177a3  master     -> origin/master  (unable to update local ref)

当我执行“git pull origin master”时,我得到:

error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

我一直在寻找,却找不到原因


当前回答

我和我的团队遇到了这个错误,无法更新本地ref,当在SourceTree中进行拉取时。

2020年更新:根据下面@Edward Yang的回答,@bryan对这个答案的评论,以及这个问题/答案,你可能需要同时运行git gc -prune=now和git remote prune origin。只运行前者对我来说一直有效,但基于ppl的回复,我认为两者都是必要的,以解决错误的不同原因。

我们使用:

git gc --prune=now

这将删除任何可以修复问题的重复引用对象。

这里有一些链接,你可以了解更多关于git引用和修剪的信息:

本周的小费

git-prune文档

吉特引用

其他回答

我已经删除了分支的本地引用:

git branch -d -r REPO/.git/refs/remotes/origin/BRANCHNAME

然后我就可以取回了。

或者更激进一点

rm -rf REPO/.git/refs/remotes/origin

这个方法每次都有效。

再次克隆存储库,并将.git文件夹复制到破碎的项目中。

如果你最近更改了密码,并且有一些奇特的东西集成了你的Windows和Linux登录,也会发生这个错误(无法更新本地ref)。

以admin cd打开Git Bash文件夹, Git添加。 Git commit -m "your message" Git推 他现在要么使用内置凭证,要么要求用户名/pw, 如果内置凭据或用户名/pw不起作用,创建一个PAT并关闭要求凭据的窗口,将弹出一个要求PAT的屏幕

我有同样的错误,我从Eclipse中更新,我得到了许多错误。 所以我尝试从DOS命令窗口更新,并得到了同样的问题。

然后我尝试了解决方案“git gc -prune=now” 这给出了文件被锁定在refs目录中的消息。

Eclipse一定锁定了“refs”目录中的某些内容。 我找到的解决方案是关闭Eclipse。 然后我用“git PULL”命令从DOS更新了存储库,一切都运行正常。