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
版权声明:本文为博主原创文章,转载请附上博文链接!

目录
相关文章
|
自然语言处理
SVN合并(Merge)与拉取分支(Branch/tag)操作简介
SVN合并(Merge)与拉取分支(Branch/tag)操作简介
467 0
|
测试技术
svn分支开发与主干合并(branch & merge)
先说说什么是branch。按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图:   branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并回trunk中,在branch和trunk各自开发的过程中,他们都可以不断地提交自己的修改,从而使得每次修改在repository中都有记录。
1630 0
svn merge和branch
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。
1275 0
Svn branch trunk merge 操作文档
        Svn branch trunk merge 操作文档 -----project -Branch   分支 -Trunk    主节点 -tag      迭代版本      Project 工程目录结构如下     1.
859 0
|
1月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接