如何从git中的损坏的松散文件中恢复

时间:2011-10-04 15:06:21

标签: git

我有一个已损坏的git对象。 git objects dir中文件的大小为0。

首先是fsck:

git fsck --full
fatal: loose object a35c1489005cca1ffeb3c2d3e4d63988408b6a24 (stored in .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24) is corrupted

然后是ls:

ls -l .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24
----------+ 1 sampath ???????? 0 Sep 13 15:26 .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24

磁盘上不存在该文件!?

# git cat-file -t a35c1489005cca1ffeb3c2d3e4d63988408b6a24
error: unable to find a35c1489005cca1ffeb3c2d3e4d63988408b6a24
fatal: git cat-file a35c1489005cca1ffeb3c2d3e4d63988408b6a24: bad file

当我试图拉动时,我首先看到了这个错误 我尝试删除文件并进行拉动,但这不起作用。它抱怨文件丢失了。

当我删除文件并运行fsck时,它向我展示了很多悬空物体

# git fsck --full
broken link from  commit 1e5980c224ff19b19ad99dbefed4c7c64c58aee6
              to    tree a35c1489005cca1ffeb3c2d3e4d63988408b6a24
dangling tree 0401d636a512b208dffd6ac6e153ab0a061f8d5d
dangling blob 58014c0266784a1e3cc1502de82837c5f36c8514
dangling tree 0507fa56260c693cea678eab0343240c5bba06ad
dangling tree 130770880c664a0b0cf5a21d037cbdba7480dc90

我厌倦了几次提交但没有帮助 有关如何从中恢复的任何指示?

1 个答案:

答案 0 :(得分:1)

看起来树已损坏。如果您知道这些提交的结构,您可能会猜到它是什么。希望您可以推断出添加或删除了哪些文件。你的斑点和其他树木也会晃来晃去。如果你真的想要从中恢复并且没有其他克隆的回购,它仍然可能,但将需要一些时间和精力和运气。

希望这有帮助。