我可以恢复 rm -rf-ed Mercurial 存储库吗?

我可以恢复 rm -rf-ed Mercurial 存储库吗?

我犯了一个错误,用“rm -rf project”这个快捷命令删除了我的整个项目目录。

当然,.hg 目录也随之消失。我有大约 15-20 个变更集,尚未推送给任何人,我真的很想找回它们。

该系统是一台Ubuntu机器,发生删除的分区是ext3,该项目主要由PHP文件组成。

我知道不写入相关磁盘的指导原则。

第一个想法是使用名为 scalpel 的工具,找回 PHP 文件,并将它们与存储库中的当前版本进行比较,然后以某种方式删除更改。虽然成功了,但它没有恢复文件名(或者我遗漏了一个开关),所以我只剩下几千个按顺序命名的 .php 文件,梳理它们不是一个选择。

有好心人可以救救我吗,并建议一种方法:

a) 取回 repo,或者

b) 获取文件及文件名

对于那些想知道我怎么会做出这么愚蠢的事情的人来说:

我正在 Vim 中处理一个文件,我想将其从存储库中删除:

:!hg rm% 复制代码

这抱怨该文件位于子存储库中,因此我指定了以下内容:

:!hg rm % -R 引擎

它抱怨文件有修改,使用 -f 强制修改。这时,我不知怎么地编写了以下命令:

:!rm -rf % -R 引擎

不知何故,看到“force”让我反射性地做了一个 rm -rf。

答案1

如果手术刀有效的话,这不太可能有帮助,但你可以尝试: http://www.gnu.org/software/ddrescue/ddrescue.html

根据我的经验,如果您永久删除了它(即在 Windows 中按 shift+delete,在 Linux 中按 rm -rf),您只能进行原始恢复。

原始恢复通常只能确定文件的类型,有时还可以确定最后编辑的日期。

我认为如果不进行大量的侦查和重建工作,你可能会倒霉。

祝你好运!

答案2

我感受到你的痛苦。

查看摄影记录。不要让名称欺骗您——它可以从 ext3 分区恢复多种类型的已删除文件。

祈祷吧!

相关内容