从Git对象恢复文件

时间:2011-07-01 08:04:45

标签: git object recovery

我抹掉了我的所有工作,不愿意解释如何。我唯一留下的是git对象。更多的是我想恢复一些丢失的图像文件。从目标文件的大小我可以知道它们是哪些。有没有办法将它们变回可用的文件?

1 个答案:

答案 0 :(得分:6)

第一件事:做个备份!然后处理该备份的副本。

如果git对象仍在正确的目录(.git/objects/xx/xxx…)中,您可以使用git fsck --full让git发现它们 - 它可能会列出存储库中的每个对象。现在查找标有committag的内容,这些是您要恢复的内容。

我可能会使用一个脚本为每个找到的提交对象创建一个分支(例如,简单地增加数字rescue-1rescue-2等)。之后使用gitk --all可视化您的所有分支并选择顶部(最近的)分支。在那里创建一个新的分支rescued-master

签出新的主分支并运行git branch --no-merge。你应该得到一个不包含在master中的分支提交列表。你可能也想给他们一个新的分支名称。

完成后,删除所有已编号的rescue-分支。

希望有所帮助并给出一个起点。