svn merge-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

svn merge

简介: svn merge 命令的使用 merge是干啥的呢? 使用过SVN都知道SVN其实就是一个代码管理的软件,使用它可以很好的解决代码冲突。他可以针对一个文件产生不同的版本,每一个版本都对应自身的改动。

svn merge 命令的使用
merge是干啥的呢?

使用过SVN都知道SVN其实就是一个代码管理的软件,使用它可以很好的解决代码冲突。他可以针对一个文件产生不同的版本,每一个版本都对应自身的改动。因为它记录了每一个文件的修改变化(可以理解为文件之间的不同点diff),这对于我们的开发,理解有很好的作用。

简而言之就是你想把某一版改动合到另一个branch上的时候,记住你合过来的改动只是每版之间的diff!!!!!!!

(1) svn merge url -c xxxx ./ (把svn 版本号为xxxx的改动合到你的本地)

(2) svn merge url -r xxxx:yyyy ./ (将url指定的code的xxxx版本到yyyy版本,merge到本地(注意:该方式不包括xxxx版本!!))

两个很好用的说明:

(1) 如果你当前要merge的code与你本地操作的code属于一个branch可以不必指定url啦!!!!

(2) 为了防治merge出错我们可以在上面命令基础上添加 --dry-run 来模拟merge的操作也就是写成:

svn merge url -c xxxx ./ --dry-run

svn merge url -r xxxx:yyyy ./ --dry-run

添加--dry-run 只是模拟实现merge 的行为而不是真正的进行这个动作!!!

merge 动作进行以后会看见各个你merge到本地的文件前面有 U(表示被更新) A(表示添加) D(表示删除) G(表示存在冲突但已经被解决)

解决产生冲突方法
为何会产生冲突呢??svn 通过diff 来进行存储,如果你本地的修改和svn 上你merge的修改都在同一行了就会存在冲突,因为他不知道该选择哪一个啦(svn 懵le )。。。

对于有冲突的文件我们按照自己的需有三种解决方式:

(1)自行处理解决:

首先选择:e

然后通过vim打开存在冲突的文件,输入 /^===可以找到冲突的位置然后解决冲突,保存退出,选择 r 表示该冲突已经被你解决。

(2)选择svn 上的文件:

选择:tc

(3)选择本地文件:

选择:mc

代码回滚
何为代码回滚呢?假设你当前版本是4420 svn commit以后版本变为4221,但是你有后悔了,想把当前的code变回4420 怎么办呢?此时你就要用到代码回滚了,对于commit 以后的code使用svn revert 是无济于事的,此时你就要用到svn merge url -c -4421 ,然后再svn commit 文件,现在的版本涨到4422 但是和4420 的code的内容是完全一样的。。。。(为啥呢??因为当你做了svn merge url -c -4421 以后就相当于把4221的改动(diff)又退回到4420了,所以你此时的code和4220就是一样的啦,你如果再继续commit现在svn 的code其实就是和4420喽)


作者:hello_new_life这个家伙很笨
来源:CSDN
原文:https://blog.csdn.net/hello_new_life/article/details/79023003
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章