我只有分支主和我得到这个错误,每次我尝试“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'.

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


当前回答

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

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

然后我就可以取回了。

或者更激进一点

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

这个方法每次都有效。

其他回答

这种情况发生在我使用不区分大小写的文件系统的OSX上。不知何故,另一个开发人员推出了一个名称相同但情况不同的分支:My-Branch vs My-Branch。

我已经检出了My-Branch,并在我做拉取时得到了“无法更新本地ref”的错误,这可能是因为文件系统认为My-Branch == My-Branch。

由于我们使用Github,我可以通过通过Github的GUI删除一个分支来解决这个问题。

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

确保执行git拉取的用户与创建存储库的用户相同。文件权限不正确。

使用gitbach line命令,使用git update-ref来更新本地分支的引用:

$ git update-ref -d refs/remotes/origin/[locked branch name]

然后使用$ git拉

[locked branch name]是由于提交id不匹配而发生错误的分支的名称。

这可能是一个非常小众的情况,但是:我在我的MacBook Pro上的Parallels VM中运行Windows,我的本地回购存储在虚拟机的磁盘上,与macOS共享。

如果我在Mac应用程序中打开了一个位于Windows VM上的repo文件,我有时会得到“无法更新本地ref”错误。当这种情况发生时,解决方案是关闭文件或退出Mac应用程序。