当我写这篇文章的时候,想起来 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 功能虽然好用,但是不能用来代替版本控制工具,这主要有如下一些原因:

  1. Local History 具有保留期,到期之后,版本数据会丢失。
  2. Local History 有最大大小,因此无法保证版本数据会持续存在。
  3. 安装新版本的 IDEA 时会自动清除本地历史记录。
  4. 用户手动点击了 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,意思就是在五个自然日中修改该文件。例如周一改了文件,周二没动,周三改了文件,那么就算两天。

不过这个日期可以自己修改,修改方式如下:

  1. Ctrl+Shift+A,唤出 Action。
  2. 输入 Registry,然后按回车。

  1. 找到 localHistory.daysToKeep 然后进行修改,如下:

将该值置为 0 就关闭了 Local History 功能。

4. 版本内容保存位置

Local History 记录的内容保存在本地,不同系统保存位置分别如下:

Windows:

%LOCALAPPDATA%\JetBrains\<product><version>

例如:

C:\Users\JohnS\AppData\Local\JetBrains\IntelliJIdea2021.3

Mac:

~/Library/Caches/JetBrains/<product><version>

例如:

~/Library/Caches/JetBrains/IntelliJIdea2021.3

Linux:

~/.cache/JetBrains/<product><version>

例如:

~/.cache/JetBrains/IntelliJIdea2021.3

好啦,每天一个小技能~

可前进可后退,IDEA 中这个功能神了相关推荐

  1. Nature子刊:微生物系统中的功能与功能冗余

    翻译:周之超@UW-Madison 编辑注:该文章发表于2018年的Perspective,目前被引405次.其作者Stilianos Louca大家并不陌生,正是常用微生物物种功能注释软件FAPRO ...

  2. 丰度决定了细菌在复杂群落中的功能作用

    本文转载自"微生态笔记",已获授权 标题:Abundance determines the functional role of bacterial phylotypes in c ...

  3. [afterCode] docker 速成班 3: 使用 container 中的功能

    通过docker 将 container 执行起来了,不是为了看看容器的状态,而是想使用 container 中的功能.介绍两种方式来使用容器中的功能. 通过端口访问 container 中的服务 通 ...

  4. 帮助你更好理解javascript中easing功能的网站 - Easings.net

    日期:2012-10-17  来源:GBin1.com 如果你开发过jQuery的动画效果的话,肯定接触过一个jQuery插件:jquery.easing plugin,这个插件可以帮助你生成不同类型 ...

  5. bootstrap下拉选择框选中事件_CAD制图初学入门之CAD软件中布局功能详解

    很多CAD制图初学入门者在绘制图纸的过程中,如果没有对CAD软件中的功能了解透彻的话,在使用的时候就没有办法运用好这些功能.接下来就给CAD制图初学入门者详细介绍一下CAD布局功能吧! CAD布局功能 ...

  6. BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 Excel Services中新功能...

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序  Excel Services中新功能 从SP Server ...

  7. ASP.NET中常用功能代码总结(3)——上传图片到数据库

    ASP.NET中常用功能代码总结(3)--上传图片到数据库<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offi ...

  8. Qt调用dll中的功能函数

    http://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html 声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll ...

  9. 如何在 Blazor WebAssembly中 使用 功能开关

    微软Azure 团队开发的 功能管理 (Feature Management) 包 Microsoft.FeatureManagement可用于实现 功能开关,可以通过功能开关特性动态的改变应用程序的 ...

最新文章

  1. 慢动作频闪怎么解决_Vlog的视频解决方案——索尼A6400
  2. springboot集成swagger2构建RESTful API文档
  3. 穿着健美裤的美女,她们身材好是锻炼出来的
  4. 【Scratch】青少年蓝桥杯_每日一题_4.01_踢足球
  5. C++ list插入元素源码分析及过程图
  6. 【Python基础】刷爆网络的动态条形图,3行Python代码就能搞定
  7. 【Linux系统编程】进程常用调度算法
  8. SAP Spartacus 页面 cx-storefront 的填充逻辑
  9. System.Text.Json 中的字符编码
  10. java简单系统_Java简单学生管理系统
  11. idea中project sdk_一文秒懂IDEA中每天都在用的Project Structure知识
  12. hadoop原来是这样的!
  13. 五、CPU详解、寄存器详解、标志寄存器详解
  14. Shadow Map阴影贴图技术之探 【转】
  15. 2 年增长 1 万亿!继苹果之后,微软市值也突破 2 万亿美元
  16. 问题以及发现问题和解决问题
  17. c语言用链表实现成绩管理系统,C语言写的学生成绩管理系统(链表)
  18. java的字符串池_翻译-Java字符串池
  19. tomcat8打开闪退_直接双击启动tomcat中的startup.bat闪退原因及解决方法
  20. 适合程序员演讲的定场诗

热门文章

  1. 查询自己名下所有的卡
  2. 关于CentOS下键盘失灵
  3. Python的优点(优势)
  4. 英语写作替换词与上下文连接词
  5. esp32 io速度_ESP32快速入门指南
  6. 畅享5android版本,科普华为畅享5怎么root及安卓6.0系统怎么root
  7. 解锁优麒麟的隐藏快捷键玩法,效率UPUP
  8. 计算机重新创建一个管理用户,如何给电脑新建一个登录账户并赋予管理权限?...
  9. linux at24c 前几个字节错误,Linux下的段错误产生的原因及调试方法
  10. python浮点数保留两位小数_python保留两位小数