完整的信息:
error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> origin/user (unable to update local ref)
永久解决
Git update-ref -d解决了这个错误的实例,例如:
git update-ref -d refs/remotes/origin/user
注意,这不会影响远程。
在我的例子中,后续的git获取再次获取该分支,并且后续的git获取/拉不再给出错误“remote ref is at but expected”。
如果这不起作用,临时修复:
还要注意的是,如果你不关心所讨论的分支(例如,你只想更新master,而不是origin/user),一个git pull的变通方法是获取然后合并你所关心的特定分支,例如。
git fetch # may give an error for a particular branch, but other branches will still be successfully fetched
git merge origin/master
不幸的是,GIT命令如修剪、重置或推送对我不起作用。修剪工作了一次,然后问题又回来了。
对我有效的永久解决方案是手动编辑git文件。只需转到项目的.git文件夹,然后在文本编辑器(如notepad++)中打开packd -refs文件。然后导航到失败的分支所在行,并将其guid更新为预期的guid。
如果你有这样的信息:
错误:不能锁定ref 'refs/remotes/origin/feature/branch_xxx':是在425ea23facf96f51f412441f41ad488fc098cf23,但预期383de86fed394ff1a1aeefc4a522d886adcecd79
然后在文件中找到带有refs/remotes/origin/feature/branch_xxx的行。这里的guid将是预期的(第二个)- 383de86fed394ff1a1aeefc4a522d886adcecd79。您需要将其更改为真正的(第一个)- 425ea23facf96f51f412441f41ad488fc098cf23。
对其他失败的分支重复操作,您就可以继续了。有时在重新获取后,我不得不重复相同的分支,我已经“固定”之前。在重新获取时,GIT更新guids并给你最新的一个。
无论如何,这个问题不是一个节目的中止。分支列表得到更新。这是一个相当大的警告。