2012-05-13 90 views
26

同时拉进我的git仓库,从我们的中央服务器,这个错误发生:不能拉,git的无法解析参考ORIG_HEAD

$ git pull origin master 

From http://aaa/repo 
* branch   master  -> FETCH_HEAD 
error: unable to resolve reference ORIG_HEAD: No such file or directory 
fatal: Cannot lock the ref 'ORIG_HEAD'. 

我试过混帐GC(与--prune =现在),并寻找类似的错误,不幸的是没有运气。

+0

也许你可能会考虑将Brian的问题标记为正确的答案,因为它有更多的选票? –

回答

82

我有这个问题,我解决了它通过删除文件.git/ORIG_HEAD然后再次拉动。 .git/ORIG_HEAD文件是0字节,而不是它应该包含的git引用,所以我刚刚摆脱它。

+0

任何想法是什么原因导致此问题? – earthmeLon

+0

@earthmeLon我不确定。也许是文件系统问题。 –

+0

删除这也解决了每次推/拉的烦人的密码提示 – RayLoveless

9

检查git remote prune origingit gc --prune=now在“git pull fails “unalble to resolve reference” “unable to update local ref””。

如果你有一个.git/rebase-merge,考虑将其删除(如 “git rebase and deleted rebasing branches causing “Interactive rebase already started” error message”)

检查也.git/HEAD内容,如this issue

如果这是某种形式的回购腐败(见“Git corrupt master branch”),首先尝试重新克隆你的回购,以及(如果需要通过git format-patch)对回购的顶部重新申请您目前的修改

+1

谢谢,不幸的是没有提到的修复工作,所以我不得不重新克隆和应用补丁。 – vvondra

8

这个答案没有解决OP的问题,但解决了类似的问题。

我有一个类似的问题(我error: cannot lock ref ... is at ... but expected ...),但它是因为有在具有相同名称的回购两个分支,但不同的情况。也许这个答案可以帮助那些到达这里的人,我无法在其他地方找到答案。 我删除了其中一个分支,然后删除其对应的参考:.git/ref/.../branch_name,然后将git拉出。发生这种情况是由于我在不区分大小写的文件系统上工作,而两个分支被推送到区分大小写的文件系统上。

例如,两个分支是BRANCH1branch1,它们都在origin远程。首先,删除其中一个分支,例如BRANCH1。然后删除它的参考:

rm .git/refs/remotes/origin/BRANCH1 

然后git pull,它应该没问题。

+0

这帮了我。感谢发布。 – dima

1

当您在存储库中使用git pull时,会创建此文件,以便在同一个存储库中不存在git pull,并且该存储过程完成后会被删除。如果进程死亡或成为僵尸,那么文件不会被删除,您必须手动检查git进程是否仍然存在。如果该过程不存在,则必须删除该文件并再次尝试git pull

相关问题