我按照制作 github pages的说明进行操作,却忘了向下移动到我的 git 子目录。结果,我只是用git clean -fdx
.
有什么办法可以弥补这个可怕的错误吗?
16 回答
不,那些文件不见了。
(刚刚在 Linux 上检查过:git clean callsunlink()
,并且没有事先备份任何东西。)
IntelliJ/Android Studio 允许从本地历史恢复文件。
不会。“git clean -fdx”将删除 git 不会从您的工作目录中跟踪的所有文件和目录。因为 Git 不跟踪这些文件,所以它不会对这些文件进行任何备份。至少通常不会。
如果您最近对其中一个文件执行了“git add”(但中止了提交),则有可能使用“git fsck --lost-found”找到它。值得一试,但不要抱太大希望。
将来,您应该考虑宁可频繁地提交几次,也不要太少地提交几次。这样你至少会有一个本地备份,即使你最终没有将这些提交推送到远程。
正如上面提到的@kusma,如果你很幸运(如果你曾经做过“git add”),那么你可以使用以下方法来提取整个对象:
git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
这样,它将查找所有类型的块,收集整个差异并添加到可以提取丢失文件的文件中。就我而言,我丢失了整个 Java 类。
如果您使用的是任何 Jetbrains IDE,则可以选择查看文件的本地历史记录。如果您已经完成git clean
,您可以重新创建文件并检查文件的本地历史记录并从那里恢复。
为我工作了一个文件。对于一个完整的目录,我不知道该怎么做。
其实是的!这个有可能!但不使用 git 命令。
我们所需要的只是一个像Recuva这样的文件恢复工具。
只需提及删除它的路径,然后让它恢复文件。
这里还有一些使用该应用程序的有用说明:
- 我强烈建议您在恢复文件之前选中此复选框(当已删除的文件出现在恢复窗口中时):
Advanced Mode
->Options
->Actions
->Restore folder structure
这样,您的所有文件都将通过保留文件夹结构来恢复,所以它'将该文件夹拖放到删除它的路径会容易得多。 - 最好在 USB 设备上安装恢复工具(因为下面的警告)
- 在提到恢复文件的位置时,请避免选择删除文件的同一驱动器(再次因为下面提到的警告),因为目前,恢复的文件可能会覆盖尚未恢复的其他已删除文件。将文件恢复到任何 USB 驱动器始终是一个很好的解决方案。
警告!一旦您丢失(意外删除)文件,请尽量不要触摸(添加/编辑文件)被删除的驱动器,以增加成功恢复的可能性。否则,您可能会完全丢失该文件。
为什么会起作用
当你删除一个文件时,实际上它并没有真正被删除。它只是标记为“已删除”,因此下次当您将文件添加/更新到同一驱动器时,这些旧文件将被新文件覆盖。但在它们被覆盖之前,仍然可以读取(当然也可以恢复)文件。
我今天遇到了这个问题。
正如其他人所说,git 不保留文件。
撤消此操作的唯一方法是使用取消删除实用程序。我使用“extundelete”并恢复了所有内容,但您的里程/文件系统可能会有所不同。
如果您正在使用 Eclipse,一种可能的解决方案是从 Eclipse 的本地历史中恢复。
如果您使用的是 mac 并使用 备份Time Machine
,那么您可以恢复
如果您使用的是IntelliJ IDEA或Android Studio,则可以轻松完成。只需创建与您删除的名称相同的文件,然后单击该文件的VCS
-> Local History
->即可Show History
。不幸的是,它不适用于 JPEG 或 PNG 图像等媒体文件。此外,目前您只能一个接一个地恢复已删除的文件。然而,这个选项多次救了我的命,所以谢天谢地,它就在那里。
我使用了应该添加到存储库中的代码,并使用 -dfx 进行了清理,我可以恢复文件。
我尝试使用 debugfs,从 inode、testdisk 和许多其他出现的工具中查找和链接,但没有人找到这个愚蠢的写作意外删除的目录。
从 sourceforge下载extundelete 。
您可能需要安装e2fslibs-dev 包
运行
$ ./configure
$ make
它将在 src 文件夹中生成用于 extundelete 的二进制文件在我的情况下,我错误地删除了一个文件夹。让我们称之为 FOOBAR
我刚跑:
$ sudo ./extundelete --restore-directory <full path to FOOBAR > <the partition>
它创建了一个名为 RESTORED_FOLDERS 的文件夹
如果您将 git 与 MSBuild 一起使用,我创建了一个复制所有文件的目标,然后执行git clean -xdf
. 这样,如果您意识到您删除了不想删除的内容,您可以轻松地恢复文件。看看这里:http ://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/
不,但也许你有一个备份,甚至不知道它。
这取决于这些文件在您的机器上放置了多长时间。如果这些文件超过一天,则您的备份中有很好的更改。
在 Linux Mint 上,您可能安装了Timeshift
备份工具。如果你足够幸运,你的代码文件夹会包含在每日备份中。
在 MacOS 上,您可能会对Time Machine
.
如果您的笔记本电脑/PC 位于 中company fleet
,则它们也有可能具有备份。
如果机器在cloud
,很可能有备份或硬盘snapshot
。
无论如何,git clean -n
事先仔细检查总是一个好主意
如果您还没有推送您的更改(git push),您还可以从您的服务器中取回尚未更新的信息。我使用 filezilla 来恢复我删除的文件并将它们复制到我的本地文件中。它不是最好的方法,但它可以工作并避免使用控制台
幸运的是,我在使用 Windows 7 时犯了这个错误。去回收站,突出显示所有已删除的文件并单击“恢复”。完毕。