GIT:致命:提交时无法解析HEAD错误

时间:2018-04-02 20:14:55

标签: git

尝试提交

git commit -a -m "Huge update"

我得到了

  

致命:无法解析提交时的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告诉我自己去找一个f *** :-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

3 个答案:

答案 0 :(得分:2)

看起来你的本地回购发生了不好的事。

查看一个简单的git fetch是否可以帮助您找回这些丢失的对象。

您可以创建远程存储库的新克隆,并检查:

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

答案 1 :(得分:0)

refs/heads/master文件是一个应该指向有效提交哈希的引用。出于某种原因,您的主人指向您的存储库中不存在的c45fd8579e1f313fcd651df4cbafbf6c8f8edba6。可能是这个对象以某种方式从.git/objects目录中删除了,或者可能是master指向从未存在的哈希。直到我知道你做了什么,我才能确定。 git reflog mastergit reflog HEAD可能会提供一些线索,但我无法确定。

我的猜测是你的.git目录被篡改了。我看到几个丢失的提交。这不是一个好兆头。如果您将存储库安全地推送到某个位置,则再次克隆是解决问题的一种方法。如果reflog命令为您提供了有用的输出,您可以强制重置(git reset --hard)主服务器到之前的提交(git reset --hard master@{1}),然后再次尝试提取。希望它会带来所有遗漏的提交。这会破坏最新的提交,但考虑到它仍悬而未决,我认为你不会失去太多。

答案 2 :(得分:0)

我遇到了同样的问题,我在这里阅读了所有答案,没有任何帮助。但是,当我删除项目目录中的“ .git”文件夹并重新初始化时,问题就消失了。希望对您有帮助。