一、产生冲突的原因:
根本原因就是两个用户都在使用同一个文件,其中一个对文件使用完成之后提交到服务器端,此时导致该文件的版本已经发生变化,而正在使用的用户仍然使用的是老版本的文件,当再次提交时导致版本不一致提交错误。
二、解决方法:
从服务器端下载文件:
相当两个用户使用同一个文件
其中一个用户对文件进行了修改,然后提交
用户提交:
现在第二个用户也修改了文件,同样进行提交,但是和第一个用户的修改内容不一样
如图,显示的是第一个用户提交成功,但是第二个用户在提交的时候出现了问题:
上面的错误提示,必须先更新工作副本!
选择升级:
这就是产生了冲突,原因就是两次提交的是同一个文件,但是第二个在提交的时候版本已经发生了变化。
网上提供解决办法:
1、 放弃自己的更新,使用SVNrevert(回滚),然后提交
2、 放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename 提交(选择文件——右键——解决),一般不采用这种方式。
3、 手动解决冲突:冲突发生时,和用户沟通,手动更新目标文件,然后执行resolved filename 来解决冲突,最后提交。
可以看到文件和文件内容的图标都变成了黄色感叹号:
我提供的几种解决方法:
1、如果是对于第一个版本的修改我们还需要的话,那就在第二个版本的基础上进行还原SVN:
这样此版本的文件就是刚刚已经提交用户的文件,在这个基础上重新进行修改。然后提交,然后更新。
2、如果是不要第一个版本的修改,需要提交第二个用户的修改,那么就把版本恢复到第一个用户提交之前的状态,然后提交新修改的版本。
单击文件夹,选择显示日志,查看日志信息,选择恢复的版本,然后在这个版本上添加第二个用户的修改内容,再提交和更新,这样服务器上的版本就是第二个用户的修改的版本。
单击复原到此版本。
3、如果两个用户修改的版本都需要,那么在第二个用户修改的文件夹上单击
选择“已解决的”,这样两个修改文件合并到了一个版本上,然后再次提交,更新!
当遇到冲突的时候,可以把冲突版本和已经提交的版本进行比较,然后找出不同的地方,经过沟通或者其他方式商讨出合适的版本,然后进行恢复版本、提交。
左边的窗体为服务器上的当前最新版本
右边的窗体为本地修改的版本
如果想用最新修改的版本,就在相应版本(左边或者右边)上单击出现:
当然根据提示也可以选择他们的,根据版本需要进行选择。
然后选中冲突的文件右键
选择“已解决的”,然后提交版本,再更新版本。
这样版本库中就是新修改的版本。
解决冲突的办法有好多,根据自己想要的版本需求,选择合适的方法!
在此,关于SVN冲突的解决方案就介绍到此,关于SVN系列的博客就介绍到此了!
在对待冲突的问题上,我们要做的不是如何解决冲突,而是避免冲突,因为在软件开发过程中,冲突要尽量的减少才能保证软件编程的方便、快捷和正确,避免冲突的方法我们可以对服务器上的文件进行权限控制,不是每一个用户都可以随便的访问这个文件,事实上,在软件开发过程中,我们能够访问的也多是自己负责的那部分的东西。还有就是对于已经修改的文件要及时提交,及时更新,不要等好长时间才提交,这样方便别人在用的时候是在最新版本的基础上进行的修改,另外每次提交文件的时候要注释好这个文件做了哪些方面的修改,方便文件的还原和后续使用。
编程是一种习惯,工作也是一种习惯,我们对待每件事情都要有一个认真负责的好习惯!