【发布时间】:2011-09-26 13:51:31
【问题描述】:
我抹杀了我所有的作品,不想解释是怎么做的。
我唯一剩下的就是 git 对象。然后我想恢复一些丢失的打包图像文件。从目标文件的大小我可以知道它们是哪些。有没有办法将它们变成可用的文件?
【问题讨论】:
-
只有 git 对象?没有参考/分支/标签?第一件事:备份
我抹杀了我所有的作品,不想解释是怎么做的。
我唯一剩下的就是 git 对象。然后我想恢复一些丢失的打包图像文件。从目标文件的大小我可以知道它们是哪些。有没有办法将它们变成可用的文件?
【问题讨论】:
如果 git 对象仍在正确的目录中 (.git/objects/xx/xxx…),您可以使用 git fsck --full 让 git 发现它们——它可能会列出存储库中的每个对象。现在寻找标记为commit 和tag 的那些,这些是您要恢复的。
我可能会使用一个脚本,为找到的每个提交对象创建一个分支(例如,简单地增加数字rescue-1、rescue-2 等)。然后使用gitk --all 可视化您的所有分支并选择顶部(最新)的分支。在那里创建一个新分支rescued-master。
签出您的新主分支并运行git branch --no-merge。你应该得到一个分支提交的列表,而不是包含在master中。你可能也想给他们一个新的分支名称。
完成后,删除所有编号为rescue- 的分支。
希望能有所帮助并提供一个起点。
【讨论】: