不能拉,git无法解析引用ORIG_HEAD

时间:2012-05-13 08:26:55

标签: git

从我们的中央服务器进入我的git存储库时,发生了这个错误:

$ 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'.

我已经尝试过git gc(使用--prune = now)并寻找类似的错误,遗憾的是没有运气。

6 个答案:

答案 0 :(得分:89)

我遇到了这个问题,我通过删除文件.git / ORIG_HEAD然后再次执行拉取来解决了这个问题。 .git / ORIG_HEAD文件是0字节而不是它应该包含的git引用,所以我就把它删除了。

答案 1 :(得分:9)

检查“git pull fails “unalble to resolve reference” “unable to update local ref””中git remote prune origin附加的git gc --prune=now

如果您有.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如果你需要)

答案 2 :(得分:8)

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

我遇到了类似的问题(我得到了 error: cannot lock ref ... is at ... but expected ... ),但这是因为回购邮件中有两个分支具有相同的名称,但具有不同的情况。也许这个答案可以帮助那些到达这里的人,我无法在其他地方找到答案。 我删除了其中一个分支,然后从.git/ref/.../branch_name中删除了相应的引用,然后git pull。这是因为我处理不区分大小写的文件系统,而两个分支被推送到区分大小写的文件系统上。

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

rm .git/refs/remotes/origin/BRANCH1

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

我必须删除 { "extensionName": { "message": "example.com — Datenschutz-Suchmaschine", "description": "Name of the extension." }, "extensionDescription": { "message": "Hol dir deine Online-Privatsphäre zurück, mach domain.com zu deiner Suchmaschine.", "description": "Description of the extension." }, "extensionUrlLanguage": { "message": "deutsch", "description": "Search Engine Language" }, "searchEngineName": { "message": "example.com - Deutsch", "description": "Search Engine Name" } } ,而不是.git/ORIG_HEAD.lock

答案 5 :(得分:0)

我遇到了Unix权限问题,我与两个不同的用户(一个是root,另一个是我的私人用户)使用相同的git repo。

因此,我不得不将.git/ORIG_HEAD上的文件所有权更改为个人用户,从而解决了该问题。

chown myuser:mygrp .git/ORIG_HEAD