可前進(jìn)可后退,IDEA 中這個(gè)功能神了!
當(dāng)我寫(xiě)這篇文章的時(shí)候,想起來(lái) N 年前一件往事,我一不小心刪除了一個(gè)剛剛寫(xiě)好的頁(yè)面,又氣又惱,后來(lái)趁著還有印象默默的花了半個(gè)多小時(shí)又重寫(xiě)了一遍,那個(gè)時(shí)候要是知道 IDEA 中這個(gè)功能該有多好呀!
今天跟小伙伴們介紹一下 IDEA 中的 Local History 功能。
1. Local History
其實(shí) IDEA 中這些小功能可能大家也都知道,但是如果沒(méi)留意可能就辜負(fù)了開(kāi)發(fā) IDEA 的同行們的一篇苦心了。
IDEA 中的 Local History 功能可以幫助我們不斷跟蹤對(duì)項(xiàng)目文件所作的更改,并且這個(gè)跟蹤不受版本控制的影響,換句話說(shuō),無(wú)論你用不用 Git、Svn 等工具,IDEA 中的 Local History 功能都是可用的。
IDEA 中的 Local History 功能不需要我們手動(dòng) commit,當(dāng)我們 coding、testing 或者 deploying 項(xiàng)目的時(shí)候,它會(huì)自動(dòng)記錄我們項(xiàng)目文件的狀態(tài)。
通過(guò) IDEA 自帶的 Local History 功能,我們恢復(fù)已經(jīng)刪除的文件,恢復(fù)某個(gè)文件的某一次更改或者將文件回滾到歷史中的任意時(shí)刻,最為關(guān)鍵的是這一切不依賴版本控制工具。
不過(guò)需要注意的是,Local History 功能雖然好用,但是不能用來(lái)代替版本控制工具,這主要有如下一些原因:
- Local History 具有保留期,到期之后,版本數(shù)據(jù)會(huì)丟失。
- Local History 有最大大小,因此無(wú)法保證版本數(shù)據(jù)會(huì)持續(xù)存在。
- 安裝新版本的 IDEA 時(shí)會(huì)自動(dòng)清除本地歷史記錄。
- 用戶手動(dòng)點(diǎn)擊了 File->Invalidate Caches/Restart,也會(huì)導(dǎo)致版本數(shù)據(jù)丟失。
2. 使用
舉幾個(gè)例子。
2.1 恢復(fù)刪除的文件
假設(shè)我有一個(gè)項(xiàng)目,叫做 druid_monitor,這個(gè)項(xiàng)目沒(méi)有使用版本控制工具 Git 或者 Svn。
現(xiàn)在我不小心刪除了該項(xiàng)目中的一個(gè)名為 RemoveAdFilter 的類,刪完之后,我發(fā)現(xiàn)刪除錯(cuò)誤,想要恢復(fù),那怎么辦呢?
選中當(dāng)前工程,右鍵單擊,依次選擇 Local History->Show History,如下圖:
在打開(kāi)的頁(yè)面中,我們可以看到這個(gè)項(xiàng)目中的文件變化:
第一條記錄就是我們剛剛刪除的記錄,現(xiàn)在我想恢復(fù)剛剛刪除的文件,那么我們選中第一條日志,右鍵單擊,選擇 Revert,如下圖:
數(shù)據(jù)恢復(fù)之后,可以看到又多了一條日志記錄:
2.2 恢復(fù)文件的變化
如果你有某一個(gè)類,想要回到歷史中的某一個(gè)版本,那么直接選擇這個(gè)類,然后進(jìn)行版本回退即可。
看中了哪個(gè)歷史版本,選中然后點(diǎn)擊 Revert 即可。中間那個(gè)就是歷史上的狀態(tài),右邊則是這個(gè)類當(dāng)前的狀態(tài):
2.3 打標(biāo)簽
如果某一時(shí)間代碼的狀態(tài)比較重要,可以打個(gè)標(biāo)簽標(biāo)記一下,如下:
選擇 Put Label... 設(shè)置一個(gè)標(biāo)簽,將來(lái)在 Show History 中就可以看到這個(gè)標(biāo)簽了,這個(gè)有點(diǎn)像 Git 中的 Tag 功能,但是不完全一樣。
3. 修改有效期
默認(rèn)文件的 Local History 保存時(shí)間是 5 個(gè) working day,意思就是在五個(gè)自然日中修改該文件。例如周一改了文件,周二沒(méi)動(dòng),周三改了文件,那么就算兩天。
不過(guò)這個(gè)日期可以自己修改,修改方式如下:
Ctrl+Shift+A,喚出 Action。
輸入 Registry,然后按回車(chē)。
找到 localHistory.daysToKeep 然后進(jìn)行修改,如下:
將該值置為 0 就關(guān)閉了 Local History 功能。
4. 版本內(nèi)容保存位置
Local History 記錄的內(nèi)容保存在本地,不同系統(tǒng)保存位置分別如下:
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