有人可以解释 Eclipse 的本地历史是如何工作的吗?
我不小心覆盖了项目中的文件,但需要恢复到早期版本。Eclipse 是否有可能将旧文件缓存在某处?
有人可以解释 Eclipse 的本地历史是如何工作的吗?
我不小心覆盖了项目中的文件,但需要恢复到早期版本。Eclipse 是否有可能将旧文件缓存在某处?
完成 CurtainDog 的回答:来自eclipse FAQ
每次在 Eclipse 中修改文件时,旧内容的副本都会保存在本地历史记录中。您可以随时将文件与历史记录中的任何旧版本进行比较或替换。
尽管这不能替代真实的代码存储库,但它可以在您意外更改或删除文件时为您提供帮助。
本地历史记录还有一个并非真正设计用于的优势:当您的工作区出现灾难性问题或遇到损坏工作区文件的磁盘错误时,历史记录还可以帮助您。
万不得已,您可以手动浏览本地历史文件夹以查找丢失文件的副本,这有点像使用 Google 的缓存浏览不再存在的网页。每个文件修订都存储在一个单独的文件中,在历史文件夹中具有随机文件名。工作空间内历史文件夹的路径是
.metadata/.plugins/org.eclipse.core.resources/.history/
您可以使用操作系统的搜索工具来定位您要查找的文件。
请注意,如果您需要将本地历史记录导入新工作区,您将需要两者:
在该新工作空间中具有功能性的本地历史记录。
尝试在 eclipse 中右键单击该文件,然后选择 Replace With->Local History。
如果有可用的历史记录,它将显示为编辑时间列表。
但更重要的是,正如其他答案中所指出的,请务必将您的文件置于版本控制中!SVN 很容易设置(你不需要服务器;它可以使用文件系统);即使您不与他人共享,也可以使用它。
提示:每当您听到自己说“是!”时,请检查您的所有代码。10 分钟后,你会说“我是怎么搞砸的?”
如果由于意外删除或 svn/cvs 覆盖而丢失了完整的包结构,请选择项目>右键单击>从本地历史记录恢复 =>选择文件。
VonC 的答案包含查找代码备份位置所需的所有信息。我只想补充一点,如果您使用的是 Mac 或 Linux,您可以执行以下操作:
$ cd [WORKSPACE]/.metadata/.plugins/org.eclipse.core.resources/.history/
$ grep -rl "class Foo" . | xargs ls -lt
这将找到包含特定字符串(即“class Foo”)的文件的所有版本,并按日期/时间对它们进行排序以轻松找到最新版本。
打开 CVS 视图,您应该会看到一个本地历史过滤器。然后,您应该能够右键单击正确的版本并获取内容或进行手动比较和合并。我不确定 Eclipse 默认设置是什么来保留本地历史,但如果你迅速采取行动,你很有可能能够取回你的东西。