假设昨天我在我的主分支上做了一些更改,但我忘了添加、提交它们。早上我做了
git reset --hard
在这种情况下是否可以恢复已删除的文件?
一些更好的 IDE 将您的文件作为本地历史记录来跟踪。如果您从外部删除了文件(例如git reset
),您应该能够在您的 IDE 中单击父目录并选择“与本地历史记录比较”。
PHPStorm
当我的未跟踪文件被某些实用程序清除时,我在 IDE 中成功使用了此功能...
git reset --hard
是一个非常危险的命令,所以下次使用时要小心:)
如果您对这些文件没有任何提交,那么您似乎没有机会恢复它们。
否则, reflog 命令可以帮助您。
git reset --hard
不会删除未跟踪的文件。git clean
但是,会的。
但是,如果你git add
的文件,不要git commit
他们,然后运行git reset --hard
这些文件将丢失。
但没关系,因为它们可以恢复,如this answer所示。(好吧,直到下一个git gc
)。
(注意:自从发布了接受的答案以来,这些步骤似乎发生了一些变化。但想法保持不变。)
为了增加已接受的答案,我能够使用 Webstorm 2016 恢复已删除的文件。
git clean -f
。为了恢复它,我进入了 Webstorm 并执行了以下步骤:
转到您的项目的项目选项卡,右键单击以进入“本地历史”下的“显示历史”。(如图所示。)
单击“显示历史记录”后,可以看到弹出窗口,其中包含“外部更改->恢复”。单击以还原右侧所需的文件。(如附图所示。)
完成上述 2 个步骤后,您应该会在“项目”选项卡中看到您的文件。“本地历史”弹出窗口将显示类似于此附图中的内容。Reverted to External Change您将获得一个选项以将其添加到 Git。
要取消跟踪它,只需git reset HEAD <filename>
从命令行执行。
您无法从 git 访问以前版本的未跟踪已删除文件,因为当然,它们不存在。我会从一些备份中恢复它们(也许IDE/编辑器留下了隐藏的备份文件?),或者,我会避免在该文件系统上工作太多并开始搜索恢复工具。