Git无法锁定ref' HEAD':无法解析引用HEAD

时间:2016-08-20 19:31:03

标签: git github bitbucket sourcetree

我试图将更改提交到我的存储库但是我收到以下错误:

git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\Contronym\AppData\Local\Temp\bkdweixb.mnu
fatal: cannot lock ref 'HEAD': unable to resolve reference HEAD: Invalid argument

Completed with errors, see above.

我正在使用bitbucket和SourceTree。

此提交失败的原因是什么?在过去的一周里,我能够在最后3次提交中做得很好。然后,突然之间,我收到了这个错误。

修改

我跑了git gc,结果如下:

$ git gc
error: bad ref for HEAD
error: bad ref for HEAD
error: inflate: data stream error (unknown compression method)
fatal: loose object 53b65bd9b4fec7f6a7b0b3313c68199a18804327 (stored in .git/objects/53/b65bd9b4fec7f6a7b0b3313c68199a18804327) is corrupt
error: failed to run repack

我检查了目录.git/objects/53/b65bd9b4fec7f6a7b0b3313c68199a18804327,但这并不存在。那里还有另外两个文件,但b65bd9b4fec7f6a7b0b3313c68199a18804327不存在。

13 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,发现的唯一解决方案是像这样导航到头部:

  

.git / refs / heads / branch_name

然后我删除了头文件。然后我进入控制台,并使用了命令:

git reset

然后所有文件都已取消登台,因此请添加它们并在以后提交。

答案 1 :(得分:2)

我遇到了同样的问题,这对我有用:

步骤1)-转到 .git \ logs \ refs \ heads 并打开名为 YOUR_BRANCH 的文档,现在复制< strong> ID -用户名和电子邮件前面的数字-

步骤2)-转到 .git \ refs \ heads 并打开名为 YOUR_BRANCH 的文档,删除该行并粘贴< strong> ID 中。

希望它对您有用

答案 2 :(得分:2)

导航到目录

.git / refs / heads / branch_name

删除首选分支名称

然后打开终端(git bash或Windows的cmd)

git reset

然后提交更改(如有必要)

然后运行以下命令以合并远程存储库分支

git pull

如果它与拒绝合并无关的历史记录

有关

然后,在终端中运行以下命令

git pull origin master --allow-unrelated-histories

此解决方案解决了我的问题

答案 3 :(得分:1)

为我工作,在终端输入:(根据您的意愿支路)

echo ref: refs/heads/master >.git/HEAD

答案 4 :(得分:1)

如果您不介意丢失历史记录,则可以先删除.git文件,然后

git init

这将重新初始化您的存储库,然后您可以从那里继续

答案 5 :(得分:1)

我遇到了这个问题,我用了这个命令!

git reset

祝你好运!

答案 6 :(得分:0)

在工作副本中以root用户调用git命令后,我遇到了同样的问题。因此,.git /下各种文件的所有者和所有者组更改为“ root”。

当我切换回用户帐户时,由于缺少权限,git无法再处理此文件。

使用

重置权限后,它又可以工作了
sudo chown -R [MY_USER]:[MY_GROUP] .git

答案 7 :(得分:0)

当我遇到这个问题时,我只是将项目克隆到一个新的文件目录中,并从.git \ refs \ heads中拉出heads文件夹,并在出现问题的目录中替换原始的heads文件。然后只需删除您创建的新克隆(因为它显然没有尝试推送的更新)。

答案 8 :(得分:0)

这是解决我的问题的方法:

 rm -rf .git/refs/heads/

答案 9 :(得分:0)

删除文件 .git/ORIG_HEAD 然后再次拉取。对我来说,.git/ORIG_HEAD 文件是 0 字节并且有 .lock extn 而不是它应该包含的 git 引用,所以我只是摆脱了它。

答案 10 :(得分:0)

我今天遇到了同样的问题。 我找到了一个非常简单的解决方法来解决这个问题,但有一些权衡。 我仍然不确定最初是什么原因造成的。 我遇到了很多解决方案,但不幸的是,没有一个真正对我有用。

在此错误期间我无法初始化 GitHub 存储库,这实际上帮助我找到了解决方案。 显然,删除 .git 目录就解决了很多问题。就在我删除该目录时,我能够初始化一个 repo。 您将在工作区中找到 .git 文件夹。 .git(dir)/config(file) 。配置文件可能已损坏,可能是问题的根源。 (我不确定原因,非常感谢外行的任何解释)

就在我删除文件夹时,所有错误都消失了。我还能够从 GitHub 桌面提交(这向我抛出了错误,以前,直接从 IDE 提交时出现相同的错误)

唯一的缺点是,您所有的分阶段更改可能会丢失,仅此而已。而且您可能必须初始化一个新的 repo,因为给出相同的名称会引发错误(如果相同的 repo 已经存在)

所以,除此之外,你应该很高兴。您现在也可以提交更改。

答案 11 :(得分:-1)

再次克隆项目,安装模块并检出到您的分支。它将恢复状态。

答案 12 :(得分:-2)

我有同样的问题。我刚用命令:

EXPLAIN SELECT *
FROM ips
JOIN ranges rt ON SUBSTR(IPAddress,1,3) = SUBSTR(

比删除文件/my_project_directory/./git/refs/heads/master 而且我可以使用命令

,1,3)
WHERE IPID = 17054