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 | ZhangSan | 2020-06-18 07:30:45 +0800 (四, 18  6 2020) | 2 lines

xxxx...

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

xxxx...

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

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

MengXiang的这两次提交需要被撤回,提交有误。也就是说需要回到到LiSi的r12494这次提交。

回退后的log

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

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

xxxx...

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

xxxx...

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

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

从log上看,SVN会生成一个新的提交r12508,因为我们重新commit了,而且保留了需要被撤销的两次提交。而且回退后,代码重新回到了r12494这次提交的内容。

你可能感兴趣的:(#,svn,SVN版本回退,SVN命令行回退)