【问题标题】:Git - corrupted object?Git - 损坏的对象?
【发布时间】:2012-08-27 21:35:06
【问题描述】:

我的房子刚刚停电,现在我的 git repo(我在它发生时承诺)正在报告:

user@localhost$ git fsck
fatal: object 192e0282d23863ec80375a77011012ef8cb80f77 is corrupted

由于此错误,我无法提交。拉取和获取似乎仍然可以正常工作。

user@localhost$ git commit
error: unable to find 192e0282d23863ec80375a77011012ef8cb80f77
fatal: 192e0282d23863ec80375a77011012ef8cb80f77 is not a valid object

我尝试重置它,但它没有做任何事情

git reset HEAD 192e0282d23863ec80375a77011012ef8cb80f77
git gc

我该如何解决这个问题?

更新:文件仍然很好,所以我只是克隆了一个新的 repo 实例并手动移动了文件(很高兴这不是唯一的 repo 实例!)。但是,我保留了损坏的存储库,以便我可以尝试在此处发布的修复,以防下次

【问题讨论】:

  • +1 表示运气难以置信
  • +1 用于备份。自我验证默克尔树的好处是它们可以原子地验证自己。问题是,嗯......他们以原子方式验证自己!这是一个 'error detection' != 'error correction' 的例子,而且是报复性的!

标签: git repository


【解决方案1】:

如果您正在寻找有关如何从中恢复的建议,请参阅此主题:How do you restore a corrupted object in a git repository (for newbies)?

【讨论】:

  • 我完成了关于 read-tree 的部分 - 但它失败了。 user@localhost$ git read-tree 192e0282d23863ec80375a77011012ef8cb80f77 fatal: object 192e0282d23863ec80375a77011012ef8cb80f77 is corrupted
【解决方案2】:

实际上,您对新克隆所做的可能是修复它的推荐方法。如果你不需要,做一些复杂的事情是没有意义的。如果您的工作树中没有正确的版本并且没有另一个干净的副本,则这些操作指南更适用。

无论如何,我认为您想重置为上次提交之前停电,将损坏的对象移出 .git/objects,然后重试。看起来您的树可能已损坏,这就是为什么旨在恢复 blob 的操作指南没有帮助的原因。

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 2016-11-24
    • 2011-05-09
    • 2014-07-06
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多