从Git对象中恢复文件

7
我把所有的工作都搞砸了,不想解释具体原因。
我现在只剩下git对象。我最希望能够恢复一些已经打包好的图像文件。从对象文件的大小可以看出它们是哪些文件。有没有办法将它们变回可用的文件?

1
只备份 Git 对象?不备份 refs/branches/tags?首要任务:备份。 - knittl
1个回答

6

第一步:备份!然后在备份的副本上操作。

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

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

检出您的新主分支并运行git branch --no-merge。您应该得到一个列出了已经分叉但不包含在主分支中提交的列表。您可能还想为它们命名一个新的分支。

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

希望这有所帮助,并提供一个起点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接