30

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

git reset --hard

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

4

7 回答 7

64

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

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

于 2012-03-17T15:27:20.680 回答
7

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

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

否则, reflog 命令可以帮助您。

于 2012-03-17T15:19:40.753 回答
7

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

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

Setp 2:转到本地历史记录,然后转到显示历史记录

在此处输入图像描述

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

在此处输入图像描述

于 2019-08-23T01:07:50.293 回答
6

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

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

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

于 2017-08-22T10:24:12.560 回答
5

注意自从发布了接受的答案以来,这些步骤似乎发生了一些变化。但想法保持不变。

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

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

    • 转到您的项目的项目选项卡,右键单击以进入“本地历史”下的“显示历史”。(如图所示。

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

    • 完成上述 2 个步骤后,您应该会在“项目”选项卡中看到您的文件。“本地历史”弹出窗口将显示类似于此附图中的内容。Reverted to External Change您将获得一个选项以将其添加到 Git。

    • 要取消跟踪它,只需git reset HEAD <filename>从命令行执行。

于 2017-08-23T18:32:07.847 回答
4

git fsck也许可以帮助你。

如果您还没有完成垃圾收集,它可能会对您有所帮助。获得 blob id 后,您可以说:

git show {blobId}

于 2019-04-18T19:31:34.043 回答
3

您无法从 git 访问以前版本的未跟踪已删除文件,因为当然,它们不存在。我会从一些备份中恢复它们(也许IDE/编辑器留下了隐藏的备份文件?),或者,我会避免在该文件系统上工作太多并开始搜索恢复工具。

于 2012-03-17T17:04:20.283 回答