【问题标题】:fatal: bad object HEAD致命:坏对象 HEAD
【发布时间】:2014-11-05 23:38:34
【问题描述】:

谁能帮我解决这个问题。我之前发表过一篇关于此的文章,但我无法通过这些答案解决它。请帮忙:)

我尝试运行 git fsck --full 并得到:

Checking object directories: 100% (256/256), done.
error: HEAD: invalid sha1 pointer 15044de63184bed22f9be9f48fd63a3a7652eea4
error: refs/heads/master does not point to a valid object!
notice: No default references
dangling blob f4ffb48ece75b45ec593146216a2ecae5a5b2194
dangling blob f37ffd41d80a2d07258d0b8fa7118d236d480fc0
dangling blob f1ff1fa538a538d9085e573f60ad11e8e7f5395e
dangling blob f9ff6bdaf08fdbf9001ff44d2aa1a49092c20ad1
dangling blob f97f1a223ef3ca33f55d51ae25d98d3b5b2f9ece

【问题讨论】:

  • 也许这篇文章会有所帮助? stackoverflow.com/questions/17274575/…
  • 您应该能够只使用git checkout master(或任何其他分支名称)为您的工作副本获取有效的 HEAD ref。
  • 我试过了,我得到了这个致命的:引用不是一棵树:master
  • 另外,你试过git gc 吗?
  • 如果您不支持所有内容,上面的两个建议绝对是坏主意。 git gc 不太可能修复任何东西,但它会清理 Git 认为它可能完成的任何东西。这使您不太可能撤消最近的更改或找到您关心的文件的丢失版本。 git checkout master 将用master 分支替换您的文件树。但是,如果您遇到上述问题,您最近的提交可能已经丢失。签出 master 意味着您本地分支更改的唯一记录(文件本身)被销毁。

标签: git


【解决方案1】:

就我而言,我编辑了.git/refs/remotes/origin/HEAD。我无法让git update-ref 工作,但这似乎是推荐的方式。

所以如果git checkout (<branch> | <commit>) 不起作用,您应该尝试git update-ref HEAD ref:master 之类的东西,或者只是尝试编辑.git/HEAD

【讨论】:

  • 这是唯一对我有用的东西 -- /refs/remotes/origin/HEAD 引用了一个已删除的分支。
  • 我已经能够通过更新 .git/HEAD 进入一个完整的分支,并从那里再次获得git log
【解决方案2】:

我遇到了同样的问题。只需执行 git pull origin master 即可修复它,并保持我的本地编辑完好无损。

【讨论】:

    【解决方案3】:

    git gc 的组合中出现“无效的 sha1 指针”(git for windows issue 423

    git 2.7(2015 年第四季度)将解决这个问题:

    commit 14886b4commit 8c845cd(2015 年 9 月 28 日)Johannes Schindelin (dscho)
    (由 Junio C Hamano -- gitster -- 合并于 commit 1018f3e,2015 年 10 月 15 日)

    "git gc" 曾经在符号 ref 悬空时发出声音(例如,当您从上游克隆时,该分支曾经是上游的默认分支,现在已经消失了,而您执行了“fetch --prune”)。

    更准确地说:

    pack-objects: 不要被损坏的 symrefs 分心

    远程 HEAD 很可能会损坏,例如当默认分支被重命名时。

    当这种事情发生时,我们应该仍然能够打包我们的对象;只需忽略损坏的 symrefs(因为它们对包装无关紧要 无论如何都要处理)。

    【讨论】:

      【解决方案4】:

      由于 git 对象的一些问题,我遇到了同样的问题。修复它们的唯一方法是在不同的文件夹中执行 git clone,然后将所有内容复制粘贴到旧文件夹中。

      如果我能找到不同的解决方案,我会告诉你的。

      问候

      【讨论】:

      • 这可能是解决问题的一种方法,但肯定不是唯一的方法。
      • 我设法在不执行 git clone 并重新开始的情况下解决了类似的问题,这意味着我保留了我的分支和提交。看我的回答stackoverflow.com/a/30872027/1737957
      猜你喜欢
      • 2013-12-14
      • 2018-02-14
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2015-02-23
      • 2020-09-21
      相关资源
      最近更新 更多