2011-11-12 291 views
9

我正在致力於Intellij IDEA的項目。我移動了重構一些包。但是我想撤銷我的更改。當我點擊撤銷按鈕,它說Intellij IDEA無法撤消

Cannot Undo

,並顯示在一個列表:

Following files affected by this action have been already changed

我怎樣才能恢復我的變化,因爲我失去了一些包和類。 Intellij IDEA是否將它們保存在臨時文件夾中?

PS:我在64位的Ubuntu計算機上使用了開放的jdk 1.6.0。

回答

14

IntelliJ IDEA有一個很棒的功能,叫做本地歷史記錄。我可以恢復我的更改。 有一個視頻給它一個詳細的例子:

http://www.jetbrains.com/idea/training/demos/local_history.html

你可以從這裏得到更多的信息:http://jetbrains.com/help/idea/2016.1/using-local-history.html

+0

感謝來自Intellij IDEA支持團隊的Serge Baranov。當我從支持頁面詢問時,他立即回答我的問題。 – kamaci

+0

是的,IntelliJ的支持人很棒,這是我比較喜歡IntelliJ上的其中一個原因(不是唯一一個),比​​Eclipse – Guillaume

+0

更好。但是如果我想恢復更改,那麼我真的想要恢復更改。但它仍然顯示在我從目錄中檢查。保持本地歷史是一回事,但保持SVN的歷史是另一回事。我期望intellij不會在SVN提交中顯示任何內容,或者在文件恢復後恢復。 –

2

當我用Google搜索到這裏好幾次,當我開發的IntelliJ插件emacsIDEAs,我會將我的解決方案留給需要它的人。 。

通常改變文件需要在runWriteAction, 和撤消更改文檔需要調用CommandProcessor.getInstance()來完成executeCommand

所以解決方法是:撥打executeCommand runWriteAction,那麼更改將是可撤消的。

protected Runnable getRunnableWrapper(final Runnable runnable) { 
    return new Runnable() { 
     @Override 
     public void run() { 
      CommandProcessor.getInstance().executeCommand(_editor.getProject(), runnable, "cut", ActionGroup.EMPTY_GROUP); 
     } 
    }; 
} 

final Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     selectJumpArea(jumpTargetOffset); 
     _editor.getSelectionModel().copySelectionToClipboard(); 
     EditorModificationUtil.deleteSelectedText(_editor); 
     _editor.getSelectionModel().removeSelection(); 
    } 
}; 

ApplicationManager.getApplication().runWriteAction(getRunnableWrapper(runnable)); 

代碼回購:https://github.com/whunmr/emacsIDEAs

12

撤消它通過VCS - >本地歷史 - >查看歷史。