【问题标题】:GIT: fatal: could not parse HEAD Error When CommittingGIT:致命:提交时无法解析 HEAD 错误
【发布时间】:2018-04-02 20:14:54
【问题描述】:

当尝试提交时

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 告诉我自己去他妈的 :-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 branch-name 然后提交吗?
  • 能否请您发布您的 HEAD 文件的权限和内容:ls -l .git/HEAD ; cat .git/HEAD
  • @Code-Apprentice:是的,我想提交本地更改。我只有一个主分支。正如您在问题中看到的那样,检查它不起作用。
  • @LeGEC:我得到:-rw-rw-r-- 1 me me 23 Apr 2 22:07 .git/HEAD ref: refs/heads/master
  • @Make42:好的;你能检查一下 cat .git/refs/heads/master 给你的 sha1 与你的 git fsck 提到的无效 sha1 相同吗?

标签: git


【解决方案1】:

您的本地存储库似乎发生了一些不好的事情。

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


您能否创建一个远程存储库的新克隆,并检查:

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

【讨论】:

  • 事实上:在新克隆的 repo 中,我可以看到 c45fd85... 是我新提交之前的提交。提交似乎在这里有效。
  • 好的,在 fawlty repo 中,git cat-file -p c45fd85 是否向您展示了什么?
  • 我现在已经删除了错误的仓库,所以我们不知道。对不起。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 2019-10-03
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2016-12-27
      • 2014-05-20
      • 2019-04-12
      • 2016-02-13
      相关资源
      最近更新 更多