我在按照制作GitHub Pages的说明操作时,忘记进入我的git子目录。结果,我使用了git clean -fdx
命令,把整个文档目录都清空了。
有没有办法撤销这个可怕的错误?
我在按照制作GitHub Pages的说明操作时,忘记进入我的git子目录。结果,我使用了git clean -fdx
命令,把整个文档目录都清空了。
有没有办法撤销这个可怕的错误?
不行了,那些文件已经被删除了。
(在Linux上进行了检查:git clean 调用 unlink()
,并且没有提前备份任何东西。)
git clean
不小心删除了 .idea
隐藏文件夹中的搁置更改,而本地历史记录则拯救了我! - emkman-n
在大多数 Git 命令(以及许多其他 *nix 命令)中有效。 - Nick McCurdyIntelliJ/Android Studio允许从本地历史记录中恢复文件。
VS Code 还保留了历史记录,您可以从中恢复。
执行“本地历史记录:查找要恢复的条目”(可使用 cmd+shift+p 并搜索“恢复”)
输入您的文件名并选择您想要的版本。
“git clean -fdx”会从你的工作目录中删除所有Git未跟踪的文件和目录。由于Git不跟踪这些文件,因此它没有这些文件的任何备份。至少通常情况下没有。
如果您最近对其中一个文件执行了“git add”(但取消了提交),则可以尝试使用“git fsck --lost-found”找到它。值得一试,但不要抱太大希望。
在将来,您应考虑经常进行提交,而不是过少次数的提交。这样,即使您不将这些提交推送到远程,您至少有本地备份。
mkdir
创建新仓库后,我忘记切换到新仓库目录(使用 cd
命令)。 - Ericgit clean
操作,则可以重新创建该文件并检查该文件的本地历史记录,并从中恢复该文件。正如@kusma上面提到的,如果你很幸运(如果你曾经执行过"git add"),那么你可以使用以下命令来提取整个对象:
git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
这样,它将寻找所有类型的块,收集整个差异并添加到一个文件中,您可以从中提取丢失的文件。在我的情况下,我丢失了一个完整的Java类。
实际上是的!这是可能的!但是不需要使用git命令。
我们所需要的只是像Recuva这样的文件恢复工具。
只需提及被删除的路径,让它恢复文件即可。
此外,以下是使用该应用程序的一些有用注意事项:
高级模式
->选项
->操作
->还原文件夹结构
警告!一旦您丢失(意外删除)文件,请尽量避免触摸(添加/编辑文件)从中删除文件的驱动器,以增加成功恢复的可能性。否则,您可能会完全丢失该文件。
为什么会有效?
当您删除文件时,实际上它并没有真正被删除。它只是标记为“已删除”,因此下次您添加/更新文件到同一驱动器时,旧文件将被新文件覆盖。但在它们被覆盖之前,仍然可以读取(当然也可以恢复)这些文件。
VCS
-> 本地历史记录
-> 显示历史记录
。不幸的是,它不适用于像JPEG或PNG图像这样的媒体文件。此外,目前只能逐个恢复已删除的文件。但是,这个选项已经在关键时刻救了我很多次,所以感激有这个功能。今天我遇到了这个问题。
就像其他人说的那样,git不会保留文件。
唯一撤销此操作的方法是使用未删除实用程序。 我使用了“extundelete”并找回了所有内容,但您的情况/文件系统可能有所不同。
git clean -fdx
命令,但并没有警告这个操作有多么危险。我想知道有多少人因为这个看起来无害的建议而不可挽回地删除了他们的文件。 - catpnosisgit clean
而引起的许多麻烦。此外,请尝试不要养成在不检查的情况下清理项目的习惯。创建一个Powershell或Bash脚本,可以调用该脚本并在运行非常具有破坏性的清理操作之前运行git clean -fdxn
,并提供确认提示。 - Josh Burgess