2010-11-09 33 views
5

我心不在焉地mv我的svn樹幹文件夾,而不是分支它。我可以把它退回去,但我恐怕會失去歷史。這最好如何撤消?回滾一個svn移動/重命名

編輯:我應該清楚,我在存儲庫,而不是我的工作副本,所以這是一個自動提交。

+0

你犯了嗎? – 2010-11-09 00:30:10

回答

4

請參閱有關的顛覆手冊,以便撤消您的錯誤更改。

你可以用svn merge來「撤銷」你工作副本的 變化,然後 提交本地修改到 庫。您只需要 指定相反的差異。 (您可以 通過指定--revision 303做到這一點:302,或等效--change -303)

svn merge -c -303 http://svn.example.com/repos/calc/trunk 
1

如果沒有提交它:

svn revert PATH 
+0

'svn revert'只能恢復* local *的變化。 SP在存儲庫上進行了更改。 – zellus 2010-11-09 06:27:55

+1

@zellus:理解,這就是爲什麼我說如果他沒有犯。 – 2010-11-09 13:48:20

3

如果要恢復,以便就好像移動從來沒有發生過,然後你需要放棄整個倉庫給你要的修訂,然後重新創建存儲庫。

查看詳情herehere

0

你最好只複製最新版本之前錯誤地提交到相同的路徑。

心不在焉志同道合的舉動

 svn mv -m 'move it!' \ 
     http://svn.example.com/repos/calc/trunk \ 
     http://svn.example.com/repos/calc/foo 

檢查日誌最新版本之前,此舉

svn log http://svn.example.com/repos/calc/trunk 

...

------------------------------------------------------------------------ 
    r17610 | john.doe | 2017-08-01 11:02:43 -0300 (tue, 01 aug 2017) | 1 line 

    move it! 
    ------------------------------------------------------------------------ 
    r17581 | john.doe | 2017-07-31 17:42:57 -0300 (mon, 31 jul 2017) | 1 line 

    fix bug 
    ------------------------------------------------------------------------ 

複製最後一個良好版本17581是HEAD

svn mv -m 'fix absently minded move' \ 
    http://svn.example.com/repos/calc/[email protected] \ 
    http://svn.example.com/repos/calc/trunk 

這將完全保留你的歷史(包括心不在焉的舉動)