我正在按照 制作 github 页面上的说明操作,还忘了切换到我的 git 子目录。结果,我刚刚使用 git clean -fdx 命令删除了整个文档目录。 有什么办法可以弥补这个可怕的错误吗?
git clean -fdx
没有。“ gitclean-fdx”将删除所有 git 无法从您的工作目录跟踪的文件和目录。因为 Git 不跟踪这些文件,所以它不会对这些文件进行任何备份。至少通常不会。
如果您最近对其中一个文件执行了“ git add”操作(但是中止了提交) ,那么有可能通过“ git fsck —— lost-found”找到它。这值得一试,但不要抱太大希望。
将来你应该考虑多承诺几次而不是少承诺几次。这样你至少有一个本地备份,即使你没有最终把这些提交到一个远程。
不,那些文件已经不存在了。(我在Linux上检查了一下:git clean 调用 unlink(), 而且在执行之前不会备份任何东西。)
我今天有个问题。
正如其他人所说,git 不保存文件。
唯一的方法是使用取消删除实用程序。我使用了“ extundelete”并恢复了所有内容,但是您的里程/文件系统可能有所不同。
如果在 MSBuild 中使用 git,我创建了一个目标来复制所有文件,然后执行 git clean -xdf。这样,如果您意识到删除了不想删除的内容,就可以很容易地恢复文件。看这里: http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/
git clean -xdf
git clean -fdxn
将执行 演习操作,并显示如果运行该操作,将删除哪些文件
(当然,这只有在你提前知道的情况下才有帮助,但是下次可以)
正如上面提到的@kusma,如果您是 真幸运(如果您曾经使用过“ git add”) ,那么您可以使用以下方法来提取整个对象:
git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
这样,它将查找所有类型的块,收集整个差异,并添加到一个文件,您可以提取丢失的文件。在我的例子中,我丢失了整个 Java 类。
如果您正在使用 Eclipse,一个可能的解决方案是从 Eclipse 的本地历史记录恢复。
幸运的是,我在使用 Windows7时犯了这个错误。进入回收站,高亮显示所有已删除的文件,然后单击“还原”。成交。
IntelliJ/Android Studio 支持 从本地历史中还原文件。
实际上是 是的! 这是可能的! 但不使用 git 命令。 我们所需要的只是一个文件恢复工具,如 康瓦。 只要提到从它被删除的路径,并让它恢复文件。
下面是一些使用该应用程序的有用注意事项:
Advanced Mode
Options
Actions
Restore folder structure
警告!一旦你丢失(意外删除)了一个文件,尽量不要触摸(添加/编辑文件)驱动器从它被删除的地方,以增加成功恢复的可能性。否则,您可能会完全丢失该文件。
为什么会有用 当你删除一个文件时,实际上它并没有真正被删除。它只是标记为“删除”,所以下次当你添加/更新文件到同一个驱动器,这些旧文件被覆盖的新的。但是除非它们被覆盖,否则仍然可以读取(当然也可以恢复)这些文件。
如果您正在使用任何 Jetbrain IDE,可以选择查看文件的本地历史记录。如果您已经完成了 git clean,那么可以重新创建文件并检查文件的本地历史记录,然后从那里恢复它。
git clean
对我来说只有一个文件,对于一个完整的目录,我不知道怎么做。
我使用了一个应该添加到存储库中的代码,我使用-dfx 清理了这些代码,这样就可以恢复文件。
我尝试使用 debug,查看和链接来自 inode,testdisk 和许多其他工具出现,没有一个找到目录这个愚蠢的编写擦除了偶然。
从 source ceforge 下载 删除。 您可能需要安装 E2fslibs-dev 包 运行 < br >
$ ./configure $ make
它将为 src 文件夹中的 extundelete 生成二进制文件 在我的例子中,我错误地删除了一个文件夹
我就跑了:
$ sudo ./extundelete --restore-directory <full path to FOOBAR > <the partition>
它创建了一个名为 RESTORED _ FOLDERS 的文件夹
如果您还没有推送您的更改(git push) ,您也可以从您的服务器返回尚未更新的信息。 我使用 filezilla 恢复我删除的文件,并将它们复制到我的本地文件中。 这不是最好的方法,但它工作,并避免使用控制台
如果您使用的是 mac 并备份了 Time Machine,那么您可以还原
Time Machine
没有,但也许你有备份,而你自己都不知道。
这取决于那些文件在你机器上放了多久。 如果这些文件的历史超过一天,那么备份中会有很好的更改。
在 LinuxMint 上,您可能已经安装了 Timeshift备份工具。如果足够幸运的话,您的代码文件夹包含在每日备份中。
Timeshift
在 MacOS 上,你可能会有一个与 Time Machine的运气。
如果您的笔记本电脑/个人电脑是在 company fleet,有机会,他们也有一个备份。
company fleet
如果机器在 cloud中,很可能有一个备份或 hdd snapshot。
cloud
snapshot
在任何情况下,事先与 git clean -n进行复核总是一个好主意
git clean -n
如果你使用的是 IntelliJ IDEA或 安卓工作室,这是很容易做到的。只需创建与您删除的名称相同的文件,然后单击该文件的 VCS-> Local History-> Show History。不幸的是,它不能与媒体文件,如 JPEG 或 PNG 图像。此外,目前您只能一个一个地恢复被删除的文件。然而,这个选项多次救了我的命,所以谢天谢地,它就在那里。
VCS
Local History
Show History
VS 代码还保留了一个可以还原的历史记录。
执行 “本地历史记录: 查找要还原的条目”(可以 cmd + shift + p 并搜索“ 恢复”)
输入您的文件名并选择您想要的版本。
通常情况下,Git 无法还原这些文件。命令 clean只删除那些未被跟踪的文件。Git 没有保留任何关于未跟踪文件的信息。 您只希望尝试一些非 Git 相关的工具来还原文件。
clean
但是,在极少数情况下,您可能在清理之前就已经将这些文件隐藏起来了。即使在此期间丢弃了这个存储,它可能仍然存在于存储库数据库中。Git 通常在 GCing 旧版本之前等待一段时间。在这种情况下,您可以尝试恢复存储: 如何恢复丢失的 Git 存储?
这是我能想到的所有方法:-/