SVN的冲突解决

SVN中多人操作同一个文件可能造成冲突,假设有两名开发人员dev1和dev2。文档test.txt的最新版本为33,内容如下

  • 不同的用户修改不同的行

dev1将第1行aaa修改成aa0然后提交,此时SVN服务该文件的最新版本是34

dev2 在33版本上将bbb修改成bb0

提交时报告该文件已过期

选择Update就是将服务器上的34版本更新到本地,

更新完成,并且SVN自动完成合并,此时并没有产生冲突,接下来可以顺利提交合并后的文件。

以上是比较简单的情形。SVN是按行比较的。如果不同的用户在不同的

  •  不同用户在不同地方新增内容

后提交的用户提示文件过期,要求更新,更新时又会提示合并文件冲突,要求手工修改冲突。

例如原始文件

dev1用户修改成如下,然后提交

dev2做如下修改提交

合并时候产生冲突,SVN产生如下几个文件

  • 其中test.txt是合并后带冲突的文件,里面增加了冲突标记
  •  .r41是本次修改的基版本
  • .mine文件是本地文件也就是.r41+本次修改的内容
  • r42是服务器最新版本

解决冲突方法1:手工合并

  1. 备份本次修改即.mine文件
  2. 撤销本次修改执行Reverse操作,此时文件为服务器最新版本
  3. 将文件与备份文件比较执行Diff操作,手工修改

解决冲突方法2:在SVN中合并

 

 

 

 

 其中

 theirs 是服务器中最新版本,mine本地版本,merged是合并后的版本;这三个区域中红色的区域是冲突的行,黄色的区域是没有行号的,表示冲突之前的内容。

如果是接受theirs或者mine其中之一,执行以下操作:

 

如果是要合并所有更改,可以按行解决冲突,例如希望接受所有的更改,结果应该是

aa

11

bb

22

操作如下:

在第二行上右键执行

在第三行上执行

带减号的行不会进入合并的内容。

 

posted @ 2019-02-03 07:33  Programmer_Life  阅读(13475)  评论(0编辑  收藏  举报