GIT:提交时出现“无法解析HEAD”错误

3
尝试提交时,使用以下命令:
git commit -a -m "Huge update"

我遇到了致命错误: 提交时无法解析HEAD。

在提交时出现了fatal: could not parse HEAD错误。

阅读fatal: could not parse HEAD Error When Committing后,我执行了以下命令:

 git symbolic-ref HEAD refs/heads/master

但没有输出,但我确实得到了

$ git fsck
Checking object directories: 100% (256/256), done.
error: HEAD: invalid sha1 pointer c45fd8579e1f313fcd651df4cbafbf6c8f8edba6
error: refs/heads/master does not point to a valid object!
error: refs/remotes/origin/master does not point to a valid object!
notice: No default references
broken link from  commit f10ca5f9234acb473ee000414e2c7d4e939b5e57
              to    tree 08a537c82c15e09badb41540ceadfb6ac1a8bb31
dangling blob 03165e2de43b743cfe049c40d0ede67fcfb3cc50
missing tree 08a537c82c15e09badb41540ceadfb6ac1a8bb31
dangling blob 1d5469bbebc0a347feef8c0d04fdbf54d87c0a84
dangling blob 1d29ed6cbea9e49273f072de1c61d6893c60a938
dangling blob 259577cbf5a72f6a3565fabb8ce84dc1c7953263
missing blob 3e2a6250392ee3148da37c6c140fc27302125efd
dangling blob 5474b368e2be10dc252d9e21942e748b2d87bd8c
dangling blob 743f1a142592da8050327a6d2e8acc9b5caface7
dangling blob 74823e581bb2cd05256fb4c53109ab6690164077
dangling blob 8399f1b02b73271337addc62e1cc0655a3437a9e
missing blob 99e63739e12ac210f709cc7d5426b46c6b869b65
dangling blob ba11541ed0813e1310b0d721c558f77197854f1f
dangling blob bab5ebd6dfda1be835d15c7704e192e6a9372404
missing blob ca265d70b113843c3080fcb29e14ddb7c50c55a2
missing commit d5750c2c0c209f95d1d6bbd8f763756302fa31b9
dangling blob ebfe8060c0c12ec4b9c7ebebcedbf6c33f435a32
dangling blob f16d2a532c3720bbeb14334a47dc5835532d9841

我可能错了,但是我认为git告诉我去自己解决问题 :-D... :,-/。以下内容似乎证实了这一点:

$ git status
fatal: bad object HEAD
$ git checkout master
fatal: Reference is no "Tree"-object: master
$ git fetch
error: refs/heads/master does not point to a valid object!
error: refs/remotes/origin/master does not point to a valid object!
$ git reflog master
fatal: bad object master
$ git reflog HEAD
fatal: bad object HEAD

还有没有一种方法可以与git协调一致?

我也遇到了这个问题。

$ cat .git/refs/heads/master
c45fd8579e1f313fcd651df4cbafbf6c8f8edba6
$ cat .git/refs/remotes/origin/master
c45fd8579e1f313fcd651df4cbafbf6c8f8edba6

你的理想最终结果是什么?我猜你有一些本地修改想要提交。你想要把它们提交到哪个分支上?你当前是否已经检出了那个分支?如果没有,可以执行 git checkout 分支名 然后再提交吗? - undefined
请问您能否发布您的HEAD文件的权限和内容:ls -l .git/HEAD ; cat .git/HEAD - undefined
@Code-Apprentice:是的,我想提交本地更改。我只有一个主分支。正如你在问题中所看到的,检出并没有起作用。 - undefined
@LeGEC: 我得到了: -rw-rw-r-- 1 me me 23 Apr 2 22:07 .git/HEAD 引用:refs/heads/master - undefined
你的电脑上是否发生了任何特殊事件,可能导致git仓库内部损坏,比如蓝屏? - undefined
显示剩余6条评论
4个回答

6

看起来你的本地 repo 出了些问题。

试试简单的 git fetch,看看能否恢复一些缺失的对象。


你能创建一个新的远程 repo 的克隆,并检查:

  • 如果 refs/remotes/origin/master 仍然指向 c45fd85...,或者它是否在其历史记录中有 c45fd85...
  • 如果 c45fd85... 存在并且是有效的对象吗?(git fsck, git cat-file -p c45fd85)

事实上:在新克隆的存储库中,我可以看到c45fd85...是在我的新提交之前的提交。这个提交在这里似乎是有效的。 - undefined
好的,在fawlty仓库中,git cat-file -p c45fd85会显示给你一些东西吗? - undefined
我已经删除了有问题的仓库,所以我们现在不会知道了。抱歉。 - undefined

2

我有同样的问题,阅读了这里的每个答案都没有帮助。但是,当我删除我的项目目录中的“.git”文件夹并重新初始化后,问题就解决了。我希望这也能帮助你。


1

1
"

refs/heads/master文件是一个引用,应该指向一个有效的提交哈希。由于某种原因,您的master指向c45fd8579e1f313fcd651df4cbafbf6c8f8edba6,但在您的存储库中不存在。这可能是因为这个对象从.git/objects目录中被删除了,或者可能是master指向一个从未存在过的哈希。在我知道您所做的一切之前,我无法确定。可能git reflog mastergit reflog HEAD会提供一些线索,以了解发生了什么,但我不能确定。

"
我猜测你的 .git 目录已被篡改。我发现有几个提交记录丢失,这不是一个好兆头。如果你将存储库安全地推送到某个位置,再次克隆是解决问题的一种方法。如果 reflog 命令给出有用的输出,你可以强制重置 (git reset --hard) 你的主分支到之前的提交记录上 (git reset --hard master@{1}),然后再尝试获取。希望它能带回所有丢失的提交记录。这将销毁最新的提交记录,但考虑到它已经悬空了,我认为你不会失去太多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接