我可以撤销`git clean -fdx`吗?

我正在按照github页面上的说明,忘记了进入我的git子目录。 因此,我只是用git clean -fdx文件的整个目录。 有什么办法可以解决这个可怕的错误吗?

不,那些文件都没有了

(刚刚在Linux上检查: git干净的调用unlink() ,并没有预先备份任何东西。)

 git clean -fdxn 

将做一个干运行 ,并告诉你什么文件将被删除,如果你跑了

 git clean -fdx 

(当然这只有在你提前知道的时候才有帮助,但是下次呢)

号码“git clean -fdx”将会删除git没有从你的工作目录跟踪的所有文件和目录。 因为Git不跟踪这些文件,所以不会有这些文件的备份。 至less不是平时。

如果你最近对这些文件中的一个做了“git add”(但是中止提交),你可以用'git fsck –lost-found'find它。 这是值得一试,但不要让你的希望过高。

在将来,你应该考虑比以往less数几次。 这样,即使最终没有将这些提交推送到远程,您至less也会拥有本地备份。

我今天有这个问题。

正如其他人所说,git不保留这些文件。

解决这个问题的唯一方法是取消删除工具。 我用“extundelete”,并恢复一切,但你的里程/文件系统可能会有所不同。

如果您正在使用Eclipse,则可能的解决scheme之一是从本地Eclipse历史logging中恢复。

IntelliJ / Android Studio允许从本地历史logging恢复文件 。

正如上面提到的@ kusma,如果你是幸运的 (如果你曾经做过“git add”),那么你可以使用下面的方法来提取整个对象:

 git fsck | awk '{print $3}' | xargs git show | tee searchresults.log 

这样,它会查找所有types的块,收集整个差异并添加到一个文件,您可以提取丢失的文件。 就我而言,我已经失去了一整个Java类。

幸运的是,我在使用Windows 7时犯了这个错误。回到垃圾箱,突出显示了所有已删除的文件,并单击“还原”。 完成。

其实是的 ! 这个有可能! 但是不使用git命令。
我们所需要的只是像Recuva这样的文件恢复工具。
只要提到它被删除的path,并让它恢复文件。

以下是使用该应用的一些有用注意事项:

  1. 我强烈build议您在恢复文件之前选中此checkbox(当恢复窗口中出现删除的文件时):
    Advanced Mode – > Options – > Actions – > Restore folder structure
    通过保持文件夹结构来恢复所有的文件,只需将文件夹拖放到被删除的path上就可以了。
  2. 在USB设备上安装恢复工具是非常可取的(因为下面的警告)
  3. 在提及恢复文件的位置时, 避免从当前恢复的文件中删除的文件(也是因为下面提到的警告)select相同的驱动器,可能会覆盖另一个未恢复的文件。 恢复文件到任何USB驱动器总是一个很好的解决scheme。

警告! 只要您丢失(意外删除)任何文件,请尽量不要触碰(添加/编辑文件)驱动器的位置,以增加恢复成功的可能性。 否则,您可能会完全丢失该文件。

为什么它的作品:当你删除一个文件,其实并没有被删除。 它只是被标记为“已删除”,因此下次将文件添加到同一驱动器时,这些旧文件将被新文件覆盖。 但是,直到它们被覆盖,仍然可以读取(并且当然是恢复)这些文件。

如果你使用MSBuild的git,我创build了一个复制所有文件的目标,然后执行git clean -xdf 。 这样,如果您意识到删除了您不想删除的内容,则可以轻松恢复该文件。 看看这里: http : //blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/