SVN 版本回退 命令行

有時候SVN提交錯了,需要回退版本。有時候我們需要暫時切換到之前的某個版本進行調試等。這時候就是需要SVN版本回退功能。

網上對於SVN的版本回退的文章,連內容都是出奇的一致,而且模棱兩可,人云亦云。可能是大家用SVN比較少,用命令行的更少,畢竟git是目前做好用的版本控制工具,另外SVN的工具也很好用。

暫時性回退

暫時回退,做完工作後再切換回來。

svn up -r 12494

本質上是將SVN本地代碼更新到了某此提交。

之後使用svn update操作還能回到當前最新的提交處。

永久回退

有時候每次提交出錯了,我們需要撤銷,但是已經提交到了遠程,那怎麼處理呢,git有reset --hard,svn沒有這玩意,svn操作起來比git,還是有點差😂。

SVN需要兩步操作:

  1. 回退
svn merge -r 12506:12494 /Users/xxx/Documents/xxx/SVN/xxx/xxx_20.03
  1. 提交
svn commit -m "revert verison from r12506 to r12494"

做上面的處理之前先將自己的代碼update到最新。

詳細說明:

首先回退到我們想撤銷操作前的那次提交:

svn merge -r 12506:12494 /Users/xxx/Documents/xxx/SVN/xxx/xxx_20.03

上面的操作讓SVN從r12506的提交回退到r12494,本質上是將r12506包括r12506這次的提交給撤銷了,保留到了r12494處的提交。

後面的是文件路徑,我比較懶,直接寫了項目的路徑,正對整個項目進行回退。也可以正對某個文件或文件夾進行操作。

其次將回退過來的操作提交到遠程:

svn commit -m "revert verison from r12506 to r12494"

log記錄如下:

回退前的log

------------------------------------------------------------------------
r12506 | MengXiang | 2020-06-18 07:30:45 +0800 (四, 18  6 2020) | 2 lines

xxxx...

------------------------------------------------------------------------
r12499 | MengXiang | 2020-06-17 10:58:15 +0800 (三, 17  6 2020) | 2 lines

xxxx...

------------------------------------------------------------------------
r12494 | Siwen | 2020-06-16 09:03:04 +0800 (二, 16  6 2020) | 1 line

xxxx...
------------------------------------------------------------------------

MengXiang的這兩次提交需要被撤回,提交有誤。也就是說需要回到到Siwen的r12494這次提交。

回退後的log

------------------------------------------------------------------------
r12508 | MengXiang | 2020-06-18 10:23:42 +0800 (四, 18  6 2020) | 1 line

xxxx...
------------------------------------------------------------------------
r12507 | AutoPackage | 2020-06-18 10:15:21 +0800 (四, 18  6 2020) | 1 line

xxxx...
------------------------------------------------------------------------
r12506 | MengXiang | 2020-06-18 07:30:45 +0800 (四, 18  6 2020) | 2 lines

xxxx...

------------------------------------------------------------------------
r12499 | MengXiang | 2020-06-17 10:58:15 +0800 (三, 17  6 2020) | 2 lines

xxxx...

------------------------------------------------------------------------
r12494 | Siwen | 2020-06-16 09:03:04 +0800 (二, 16  6 2020) | 1 line

xxxx...
------------------------------------------------------------------------

從log上看,SVN會生成一個新的提交r12508,因爲我們重新commit了,而且保留了需要被撤銷的兩次提交。而且回退後,代碼重新回到了r12494這次提交的內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章