【问题标题】:Data corruption using git使用 git 破坏数据
【发布时间】:2014-10-25 16:05:37
【问题描述】:

我正在从事一个项目,但遇到了硬件故障。在这发生之前,我有大约 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

提前谢谢你。

【问题讨论】:

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


【解决方案1】:

谢谢马卡托。我对你的评论投了赞成票。 我想出了自己的快速而肮脏的解决方案。

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

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

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

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

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

  6. 我运行了一个 git status,它表明我的分支比 origin/master 领先 29 次提交。

  7. 我推送了我的提交。

  8. 运行另一个 git 提交,它提交了本应在该损坏提交中的更改。

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

我希望这对遇到此问题的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2012-02-01
    • 2011-05-11
    • 1970-01-01
    • 2015-04-14
    相关资源
    最近更新 更多