TortoiseSVN使用merge出现代码冲突后正确的解决方式
本文还在继续完善中,稍安勿躁(滑稽)……
前言
公司代码项目使用SVN管理,分为dev(开发)、test(测试)、prod(生产)这三个版本;
平时用dev开发,开发完毕后要将代码合并到test并提测,测试完成后要把代码合并到prod准备打包上生产。
期间,各自开发并提交代码时,经常会产生代码冲突,不过这个还比较好解决,可以使用IDEA(或Eclipse)自带的工具解决,或者先记录下自己的修改内容、删掉冲突文件重新update,然后再修改文件提交自己修改的内容即可。(其实主要是冲突文件较少,冲突位置显而易见,并且知道要保留哪部分代码,各自解决各自的就行了。)
然而,合并代码是最让人头疼的了(从dev合并到test,或者从test合并到prod),产生的冲突不太好解决:
1.一个需求,有多个人开发,改动了一堆代码文件。
2.假设开发完毕,dev已经是提交后的最新状态,现在要将代码合并到test。(统一合并,在一台计算机上操作。)
3.开始合并代码,使用TortoiseSVN,右击"test"文件夹,选择"TortoiseSVN->merge..."
4.选择第一个单选按钮,"Merge a range of revisions",点击"next"
5.在"URL to merge from"中选择dev的路径,选择下方的"specific range"单选按钮,点击旁边的"Show log"按钮,选中本次需要提测的svn提交记录并点击OK。(因为dev中还会有不需要提测的代码,所以要选择才可以)
6.之后返回刚才的对话框,可以看到"specific range"右侧已经出现了需要合并的svn变更号,然后点击"Next"。
7.保持默认设置,下拉菜单为"Working copy",单选按钮为"Compare whitespaces",其余的都没有选中;然后点击"Test merge"按钮测试合并效果。
8.如果没有报错提示代码冲突,那么就可以点击"Merge"按钮成功将代码合并了。
9.然而我们的项目经常会提示代码冲突,冲突文件一堆……(冲突原因先不管,总之就是合并代码时出现冲突了,得想办法解决后才能合并)
10.这时,我们一般会先点击"Merge",后续选择"resolve later",先将不冲突的文件合并过去,然后一个一个处理冲突的文件,处理完成后提交代码。
11.或者直接使用Beyond Compare(文件对比工具)进行代码合并,不使用TortoiseSVN的"Merge"功能;这样的好处是不会出现代码冲突问题,合并完成后提交代码就行。
12.或者使用IDEA进行合并,具体就是手动用dev中代码文件替换掉test中的代码文件(复制整段代码内容替换掉目标内容也可以),然后IDEA会显示出代码发生了哪些变更,将准备上线的代码块留下、不准备上线的代码块回退,然后提交代码。这样也不会出现代码冲突。
13.或者,干脆不统一合并代码了,各自把各自的代码合并到test;各自处理各自的冲突反而方便点。
本文目标
上方可能写的有些乱,总的来说就是,使用TortoiseSVN的"merge"功能进行代码合并时,出现的冲突不太好解决。
本文的目的是,将TortoiseSVN使用"merge"合并代码时出现冲突时的解决方法梳理清楚。
TortoiseSVN使用merge合并代码,发生冲突的原因
1.首先,SVN有两种冲突,内容冲突与树冲突。
2.svn,对于同一个文件,A先提交测试,B后提交测试,A再提交测试;之后A将两次代码用merge合并到生产,但是B的内容不合并,此时会冲突。(由于行不一样?)
3.svn,对于同一个文件,A先提交测试,B后提交测试;B先提交生产(用merge),A后提交生产(用merge),A就会把B提交的东西覆盖。(这里不会冲突,而是直接覆盖,会导致线上功能回退,需要注意;需要自己检查代码,完善后再提交)
4.选择多个svn提交号进行代码合并时,经常会产生冲突。(原因暂时没有搞明白;不过每次merge时选择一个版本号、一次一次点merge比较保险)
/* 可以选择"resolve later",后续单独对冲突文件进行处理。 */
TortoiseSVN树冲突与解决方法(偶尔会发生的冲突)
1.树冲突原因:
两个人以上对文件夹或整个文件进行了修改(删除、新增等操作,不是指修改内容 )
2.截图(手绘版):
3.解决方法
https://blog.csdn.net/xgf415/article/details/75196714
TortoiseSVN内容冲突与解决方法(经常会发生的冲突)
可以参考下面这篇文章,算是比较好的冲突解决方法了: