使用git破坏数据

时间:2014-10-25 16:05:38

标签: git data-recovery data-retrieval corrupt-data

我正在研究一个项目并遇到硬件故障。在发生这种情况之前,我有大约30次提交我没有推动。我从崩溃中恢复并检查了我的回购。我现在从git status收到此错误消息。

error: object file .git/objects/a8/f43fd5a872feda2a771e6a1ced1518f455d9f3 is empty
error: unable to find a8f43fd5a872feda2a771e6a1ced1518f455d9f3
error: object file .git/objects/a8/f43fd5a872feda2a771e6a1ced1518f455d9f3 is empty
fatal: loose object a8f43fd5a872feda2a771e6a1ced1518f455d9f3 (stored in .git/objects/a8/f43fd5a872feda2a771e6a1ced1518f455d9f3) is corrupt

如何删除此空对象而不从HEAD收到错误消息?

我尝试手动删除坏对象,但遇到了这个错误:

fatal: could not parse HEAD

提前谢谢。

1 个答案:

答案 0 :(得分:1)

谢谢Makato。我投了你的评论。 我想出了自己快速而又肮脏的解决方案。

  1. 我去了〜/ my_project / .git / logs / refs / heads / 在该目录中使用sublime文本编辑器打开名为:master的文件 (此文件包含提交历史记录)

  2. 我去了最后一行代码。它包含NULL,NULL,NuLL一遍又一遍地重复。我删除了它并保存了文件。

  3. 在提交的最后一行中,您将看到2个提交字符串,每个字符串中包含40个字符。我复制了第二个字符串。

  4. 我接下来去了这个目录。 〜/ MY_PROJECT / git的/裁判/头 在该目录中使用sublime文本编辑器打开名为:master的文件 (此文件包含历史记录中的最后一次提交)

  5. 我粘贴了之前复制的提交字符串并保存了文件。

  6. 我运行了一个git状态,它表示我的分支在29次提交之前超过了origin / master。

  7. 我推了我的提交。

  8. 执行另一个git提交,并提交应该在该损坏提交中进行的更改。

  9. 现在我回到了我离开的地方。

  10. 我希望这有助于任何遇到此问题的人。