繁体   English   中英

是否仍然可以在 git 中恢复已删除的未跟踪文件?

[英]Is it still possible to restore deleted untracked files in git?

假设昨天我在我的 master 分支上做了一些更改,但我忘了添加、提交它们。 早上我做了

git reset --hard

在这种情况下是否可以恢复已删除的文件?

一些更好的IDE会将您的文件跟踪为本地历史记录。 如果您从外部删除了文件(例如, git reset ),您应该可以在父目录中的IDE中单击并选择“与本地历史记录比较”。

当我的未跟踪文件被一些实用程序消灭时,我在PHPStorm IDE中成功使用了此功能...

不...................不是。

git reset --hard是一个非常危险的命令,所以下次使用时要小心:)

如果您没有对这些文件进行任何提交,那么您似乎无法恢复它们。

否则,reflog命令可以帮到你。

注意由于接受的答案已经公布,所以步骤似乎有所改变。但这个想法仍然是一样的。

为了添加到已接受的答案,我能够使用Webstorm 2016恢复已删除的文件。

  1. 首先,我使用git git clean -f丢失了我的文件强制清理。
  2. 为了恢复它,我进入了Webstorm并执行了以下步骤:

    • 转到项目的“项目”选项卡,右键单击“本地历史记录”下的“显示历史记录”。 如图所示。

    • 单击“显示历史记录”后,可以看到弹出“外部更改 - >还原”。 单击以还原右侧所需的文件。 如附图所示。

    • 完成上述两个步骤后,您应该会在“项目”标签中看到您的文件。 弹出的“本地历史记录”将显示此附图中的内容。 恢复为外部更改您将获得一个选项,以将其添加到Git。

    • 要解决它,只需从命令行执行git reset HEAD <filename>

git reset --hard不会删除未跟踪的文件。 但是, git clean会。

但是如果你git add文件,不要git commit它们然后运行git reset --hard那些文件丢失。

但是没关系,因为它们可以恢复,如本答案所示。 (好吧,直到下一个git gc )。

git fsck也许可以帮到你。

如果你还没有完成垃圾收集,它可能会帮助你。 一旦你有blob id你可以说:

git show {blobId}

在Intellij中如何恢复未跟踪的恢复更改

第1步:选择文件夹,右键单击它

第2步:转到“本地历史记录”,然后转到“显示历史记录”

在此输入图像描述

第3步:选择意外恢复的未跟踪文件。 然后在右侧面板中选择这些文件并还原更改,您将获得恢复格式的文件。

在此输入图像描述

您无法从git访问以前版本的未跟踪已删除文件,因为在coruse中它们不存在。 我会从一些备份中恢复它们(也许是ide / editor留下了隐藏的备份文件?),或者,作为替代方案,我会避免过多地使用该文件系统并开始搜索恢复工具。

如果“recuva”等文件检索工具不起作用,请执行以下操作:

  1. 如果您至少构建了一次解决方案,那么将在您的 Debug/Release 或其他文件夹中存储 DLL(在 .net 中间语言文件中称为 DLL)。
  2. 然后尝试使用 DotPeek 等工具反汇编 DLL。

这对我有用。 我能够检索内容。

如果您使用的是 Windows,请转到您保存这些文件的文件夹 > 右键单击 > 属性 >“以前的修订版”,然后双击最近的修订版。 它将显示当时所有这些文件是如何被提及的。 打开你想要的文件,如果它是你想要的,复制内容并粘贴到你当前的文件中。

如其他答案中所述, Local History方法或在您编写它的编辑器中简单地单击ctrl+z (撤消)是最佳答案。 但是当我实际上没有在支持本地历史记录的 IDE 中编写代码时,这种方法就派上用场了。

对于 VScode,以下步骤对我恢复已删除的未跟踪文件有效

  1. CTRL + SHIFT + P
  2. 查找:“本地历史:查找要还原的条目”
  3. 搜索已删除的文件
  4. 选择上次保存的文件打开

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM