当我写这篇文章的时候,想起来 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. Integer to Roman 问题
  2. python自动化报表定时跑_POINTer分享:Python如何做报表自动化
  3. 作者:寇纲(1975-),男,博士,西南财经大学工商管理学院教授、博士生导师、执行院长...
  4. 1、Docker部署及基础理论
  5. osgi java web_在Tomcat中使用Java Web应用程序的OSGi软件包
  6. 使用maven打包bootdo并运行
  7. 预言:ALEXA工具条即将进行大规模升级(转)
  8. 计算机网络实验:常用网络命令的使用(ping、ipconfig、netstat、tracert、arp)
  9. 无尽算法之 1比特与2比特字符
  10. 一切前端概念,都是纸老虎(附送书的抽奖结果)
  11. java计算机毕业设计疫情期间高校师生外出请假管理系统录屏源代码+系统+数据库+lw文档
  12. 开放式耳机的颠覆之作!南卡OE Pro新皇降临!佩戴和音质双重突破
  13. Navicat绘制数据库物理模型
  14. html文件只能打印一页,javascript – 使用window.print()打印巨大的表只打印一页
  15. http authorization 基本认证
  16. VSCode中使用 eslint+prettier完成代码格式化以及自动化整理
  17. 数据库作业 1:绘制crow‘s foot图
  18. 张艾迪(创始人):梦想与未来
  19. 多传感器融合定位(4-基于滤波的2融合方法)2-使用仿真数据进行imu-gnss eskf和时变系统下的可观测性分析
  20. chrome 火狐_添加有趣的图形以记住Firefox或Chrome中的Milk标志

热门文章

  1. 路由器 内核开发 流程
  2. 高德地图车机版(修改共存后去除启动弹窗弹窗代码)
  3. com.netflix.zuul.exception.ZuulException: Filter threw Exception
  4. 一个程序最多可以使用多少内存?
  5. 河北小学计算机教案第二册,河北人民版小学信息技术教案第二册全册.doc
  6. Sort排序+字符串处理,转list,转数组去重+No value present+MySQL中的数据类型+时间戳转日期格式+JSONArray 遍历方式+端口占用8/10-8/21
  7. MAC电脑SecureCRT配色方案
  8. Android Studio Bumblebee Patch 3下载地址
  9. html关闭页面弹出再见信息提示框,js弹出框、对话框、提示框、弹窗总结
  10. OpenGL ES 3.0管线渲染流程