SVN代码回滚命令之---merge的使用

一、改动还没被提交的情况(未commit)

这种情况下,见有的人的做法是删除work copy中文件,然后重新update,恩,这种做法达到了目的,但不优雅,因为这种事没必要麻烦服务端。

其实一个命令就可以搞定:

 

1

<code class="hljs bash"><span class="hljs-comment"># svn revert [-R] PATH</span></code>

 

PATH可以是准备回滚的文件、目录,如果想把某个目录下的所有文件包括子目录都回滚,加上-R选项。

 

二、改动已经提交(已commit)

1.首先取得当前最新版本,不是最新的有可能带来麻烦:

 

1

<code class="hljs tcl">svn <span class="hljs-keyword">update</span></code>

 

假设当前版本是2582.

2.找到要回滚到的版本号,如果不清楚,查看log,diff

 

1

2

<code class="hljs bash">svn <span class="hljs-built_in">log | more

svn diff -r version1:version2 PATH</span></code>

 

假设回滚到版本2580.

3.merge

 

 

1

<code class="hljs sql">svn <span class="hljs-keyword">merge -r <span class="hljs-number">2582:<span class="hljs-number">2580 <span class="hljs-keyword">PATH</span></span></span></span></code>

 

merge完使用diff确认结果

 

 

1

<code class="hljs nginx"><span class="hljs-attribute">svn diff PATH</span></code>

 

4.提交

 

 

1

<code class="hljs nginx"><span class="hljs-attribute">svn ci PATH -m <span class="hljs-string">"Revert version from xxx to xxx because..."</span></span></code>

 

因为又一次提交,版本号又升了一个,现在变成了2583.

 

见有的人是这么做回滚的,就是逐个修改代码,然后再提交,如果改动很多的话难免 有所遗漏,非常不推荐。

如果在这期间,其他人提交了很多代码,如何保留别人的劳动成果,只把自己的错误剔掉,不太容易。

 

SVN 回滚:

svn没有恢复旧版本的直接功能,不过可以使用svn merge命令恢复。 
比如说当前HEAD为14,而我要恢复成10版本,怎么做?用svn merge: 
svn update         //更新工作目录
svn merge --revision 14:10  //修订版本14的内容到10
svn commit -m "restore to 
revision 10"  //向服务器上提交改动,生成一个最新版本,version15
merge是比较指定版本的差异,然后把这些差异应用到本地工作副本,而-r后的14:10,是指相对于版本14来说版本10的变化(注意,这个版本的次序很重要。),也就是相对版本14,我版本10添加了哪些文件或目录,以及哪些文件添加了哪些行删除了哪些行。又因为本地版本是最新的14,所以把这些差异应用到本地版本时就等于把14改变成10,其效果等于还原到版本10。然后提交,最后的版本号是15。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值