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