当我写这篇文章的时候,想起来 N 年前一件往事,我一不小心删除了一个刚刚写好的页面,又气又恼,后来趁着还有印象默默的花了半个多小时又重写了一遍,那个时候要是知道 IDEA 中这个功能该有多好呀!
今天跟小伙伴们介绍一下 IDEA 中的 Local History 功能。
1. Local History
其实 IDEA 中这些小功能可能大家也都知道,但是如果没留意可能就辜负了开发 IDEA 的同行们的一篇苦心了。
IDEA 中的 Local History 功能可以帮助我们不断跟踪对项目文件所作的更改,并且这个跟踪不受版本控制的影响,换句话说,无论你用不用 Git、Svn 等工具,IDEA 中的 Local History 功能都是可用的。
IDEA 中的 Local History 功能不需要我们手动 commit,当我们 coding、testing 或者 deploying 项目的时候,它会自动记录我们项目文件的状态。
通过 IDEA 自带的 Local History 功能,我们恢复已经删除的文件,恢复某个文件的某一次更改或者将文件回滚到历史中的任意时刻,最为关键的是这一切不依赖版本控制工具。
不过需要注意的是,Local History 功能虽然好用,但是不能用来代替版本控制工具,这主要有如下一些原因:
- Local History 具有保留期,到期之后,版本数据会丢失。
- Local History 有最大大小,因此无法保证版本数据会持续存在。
- 安装新版本的 IDEA 时会自动清除本地历史记录。
- 用户手动点击了 File->Invalidate Caches/Restart,也会导致版本数据丢失。
2. 使用
举几个例子。
2.1 恢复删除的文件
假设我有一个项目,叫做 druid_monitor,这个项目没有使用版本控制工具 Git 或者 Svn。
现在我不小心删除了该项目中的一个名为 RemoveAdFilter
的类,删完之后,我发现删除错误,想要恢复,那怎么办呢?
选中当前工程,右键单击,依次选择 Local History->Show History
,如下图:
在打开的页面中,我们可以看到这个项目中的文件变化:
第一条记录就是我们刚刚删除的记录,现在我想恢复刚刚删除的文件,那么我们选中第一条日志,右键单击,选择 Revert,如下图:
数据恢复之后,可以看到又多了一条日志记录:
2.2 恢复文件的变化
如果你有某一个类,想要回到历史中的某一个版本,那么直接选择这个类,然后进行版本回退即可。
看中了哪个历史版本,选中然后点击 Revert 即可。中间那个就是历史上的状态,右边则是这个类当前的状态:
2.3 打标签
如果某一时间代码的状态比较重要,可以打个标签标记一下,如下:
选择 Put Label… 设置一个标签,将来在 Show History 中就可以看到这个标签了,这个有点像 Git 中的 Tag 功能,但是不完全一样。
3. 修改有效期
默认文件的 Local History 保存时间是 5 个 working day,意思就是在五个自然日中修改该文件。例如周一改了文件,周二没动,周三改了文件,那么就算两天。
不过这个日期可以自己修改,修改方式如下:
- Ctrl+Shift+A,唤出 Action。
- 输入 Registry,然后按回车。
- 找到
localHistory.daysToKeep
然后进行修改,如下:
将该值置为 0 就关闭了 Local History 功能。
4. 版本内容保存位置
Local History 记录的内容保存在本地,不同系统保存位置分别如下:
Windows:
1 | %LOCALAPPDATA%\JetBrains\<product><version> |
例如:
1 | C:\Users\JohnS\AppData\Local\JetBrains\IntelliJIdea2021.3 |
Mac:
1 | ~/Library/Caches/JetBrains/<product><version> |
例如:
1 | ~/Library/Caches/JetBrains/IntelliJIdea2021.3 |
Linux:
1 | ~/.cache/JetBrains/<product><version> |
例如:
1 | ~/.cache/JetBrains/IntelliJIdea2021.3 |
好啦,每天一个小技能~