Nate
  • 122

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

什么时候容易出现冲突?

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

无法进行对比的二进制文件,比如图片等

如何解决冲突?

图片描述

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

发生冲突时不用慌,我们可以轻松解决,选中冲突文件,右键如下操作
图片描述

有几个选项我们来看下:

Edit confilicts:修改冲突,可以对冲突的行进行内容选择,后面我们详细说。

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

Resolve conflict using 'theirs':使用他的提交覆盖我的修改来解决冲突。如果你的修改不需要提交,你可以方便的选择这个。

Resolve conflict using 'mine':使用我本地的版本覆盖他的来解决冲突。如果对方提交的代码没什么用,你可以直接使用这个来解决。

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

图片描述

上图是编辑冲突的界面,如果你的界面显示了很多空白符号,你可以点击顶部的“Show Whitespaces”来隐藏。

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

左上的第12行下面的绿色等号表示这行被删除了,13、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视频教程:https://www.bilibili.com/video/av66292191/

其他相关教程

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

推荐阅读
SVN系列教程
用户专栏

svn相关教程

9 人关注
7 篇文章
专栏主页