不再怕SVN冲突:轻松解决SVN冲突

何时容易出现冲突?

多我的同时修改了同个文件中的同一行代码segmentfault

没法进行对比的二进制文件,好比图片等svn

如何解决冲突?

图片描述

如上图,test_conflict.py文件发生了冲突,而且多出了几个文件,其中.mine是我本地修改了还没提交的版本,.r2文件是上一个版本的文件,.r1是上上个版本的文件。工具

发生冲突时不用慌,咱们能够轻松解决,选中冲突文件,右键以下操做
图片描述this

有几个选项咱们来看下:spa

Edit confilicts:修改冲突,能够对冲突的行进行内容选择,后面咱们详细说。插件

Mark as resolved:直接标记为已解决,这样会删除.mine、.r一、.r2这些文件,但这只是标记,若是你直接标记为解决,实际上文件仍是冲突的,只是状态修复了。blog

Resolve conflict using 'theirs':使用他的提交覆盖个人修改来解决冲突。若是你的修改不须要提交,你能够方便的选择这个。教程

Resolve conflict using 'mine':使用我本地的版本覆盖他的来解决冲突。若是对方提交的代码没什么用,你能够直接使用这个来解决。图片

下面咱们详细讲解下Edit confilicts这个选项。ip

图片描述

上图是编辑冲突的界面,若是你的界面显示了不少空白符号,你能够点击顶部的“Show Whitespaces”来隐藏。

上图的左边.r2展现的是上个版本的变化,右边.mine是咱们本地修改的版本,下面是表示合并后的效果。

左上的第12行下面的绿色等号表示这行被删除了,1三、14行前面的+号表示这两行是新增的

右上的一样也是删除了一行,而后增长了第13行

下面区域的13,14行显示的是红色背景的问号,表示这两行SVN不知道如何合并代码。

假设咱们须要13行保留我为我本地的修改,14行使用他人提交的。那么选中右上的第13行,右键选择“Use this text block”,表示使用这行的代码;
图片描述

选中左上的14行,右键选择“Use this text block”。这样就搞定了,下面区域会显示合并后的效果
图片描述

这样下面区域的冲突行就所有解决了,点击顶部工具栏的“Mark as resolved”标记为已解决好冲突,或者直接ctr+s保存也会提示“Mark as resolved”菜单。

图片描述

到这冲突就完美解决了。

这里再解释下其余的一些菜单项:

Use this text block:使用这块代码为合并后的行

Use this whole file:使用这整个文件做为合并后的文件

Use text block from 'mine' before 'theirs':两边的代码都保留,个人代码在前面

Use text block from 'theirs' before 'mine':两边的代码都保留,个人代码在后面

最后推荐你们一个很是好用的SVN源码托管站:SVNBucket

其余相关教程

SVN快速上手
SVN经常使用命令
SVN钩子解放你的双手
SVN 和 Git 的一些误解和真相
Mac用户SVN图形界面推荐
Eclipse安装SVN插件和检出代码