5.SVN冲突解决

目录


Svn专栏目录(点击进入…)



冲突

冲突就是在同一个版本基础之上,多个人对该文件修改了修改,其中一个人将文件提交到SVN,这时,该文件已经是新的版本,但是,其他人的本地还是旧的版本。这时,其他人并不知道该文件已经有了新的版本,执行提交操作,这时就产生了冲突

解决冲突的核心思想:为了避免冲突,要在最新的版本之上修改(也就是说修改之前先更新)再提交

如果更新了之后,在编写代码的同时别人将该文件再次更新(不可能时时刻刻都查看更新),这时直接提交会造成冲突
正确的做法是:提交之前将该文件先执行与资源库同步操作,先将冲突解决掉再提交代码

首先要先明确,解决冲突是不能通过工具自动完成的,必须人工完成。当然了,可以借助工具辅助完成


制造冲突

1.模拟两个用户(桌面和Eclipse)
2.桌面用户修改后提交
3.Eclipse修改后也提交
4.最终出现了冲突

(1)冲突条件:服务器中的项目、Eclipse中的项目一致

没有修改下的状态
在这里插入图片描述


(2)桌面修改代码

在这里插入图片描述

将桌面修改的提交
在这里插入图片描述


(3)在Eclipse中修改代码

在这里插入图片描述

然后在eclipse中资源同步;出现了冲突
在这里插入图片描述

解决冲突

(1)双击出现冲突的文件(OneTest.java)

在这里插入图片描述


(2)按箭头点击保存

在这里插入图片描述

点击保存之后的效果
在这里插入图片描述


(3)右击更新

在这里插入图片描述

更新后出现了下面
在这里插入图片描述

因为发生冲突了,别人都从原始版本(相对)这个版本对R.java这个文件进行了修改,别人修改后先提交了形成28版本,然后你做了提交操作,这时为了避免你覆盖别人的修改工作,SVN提示你发生了冲突,并自动形成R.java.mine、R.java.r27、R.java.r28这三个文件

在这里插入图片描述
R.java.mine:自己修改后准备提交的那个版本
R.java.r27:初始版本;
R.java.r28:别人赶在你之前提交的那个版本

27、28为版本号;R.java的R为class类名

另外应该还有个R.java是自动合并了你的版本和别人提交的版本形成的(其中用<<<<<、======、>>>>>等符号标记出了自动合并的部分)

自动生成这些文件的目的是便于手动合并两个人的修改。这时建议查看一下这个文件的历史记录,看看28这个版本是谁提交的,问问他修改了什么地方,然后手动将两个人的修改合并到同一个文件R.java中,然后使用SVN标记“冲突已解决”,标记后多余的文件会被自动删除,然后就可以正常提交了。或者,找到冲突的文件右键找到Edit conflicts对冲突进行修整,调整好之后保存,右键选择Resolved…便可解决冲突

在这里插入图片描述
然后直接右击提交到服务器库,就OK了!

在开发中,有些时候会遇到这种情况,服务端文件的内容被大量的修改,如果按照上面的方法一个个解决,非常的麻烦,这时可以尝试以下的解决方案
思路:
1.备份该文件
2.将该文件执行还原操作,并且再执行更新,操作(也就是说,放弃自己的修改,更新到最新的版本)
3.将备份文件中的需要修改的内容拷贝(不是全部,只是自己修改的部分)回该文件,在执行提交就OK了


冲突图标

(1)黄色感叹号(有冲突)

这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许 你提交,防止你的提交覆盖了别人的修改。要解决冲突,如果你确认你的修改是无效的,则用TSVN还原你的修改就行了;如果认为你的修改是正确的,别人的提 交是无效的,那么用TSVN先标记为“解决冲突”,然后就可以提交了;如果你认为你的修改和别人的修改都有一部分是有效的,那么你就把别人的修改手动合并 到你的修改中,然后使用TSVN标注为“解决冲突”,然后就可以提交了。进入文件夹,寻找有黄色感叹号的文件,这些文件就是发生冲突的地方,根据实际情况处理冲突


(2)米字号(有本地修改代码)

这是说明你有未提交的本地代码


(3)问好(新加入的资源)

这说明该文件是项目中新增文件资源,新增资源可以是文件、图片、代码等


(4)红色感叹号(本地代码与库没有保持一致)

这说明本地代码跟库上没有保持一致,如果用户想修复,可以将带红色感叹号图标文件删除,直接update即可


(5)灰色向右箭头(本地修改过)

本地代码没有及时上库


(5)蓝色向左箭头(SVN上修改过)

记得更新代码后修改,提交前跟svn对比习惯

(6)灰色向右且中间有个加号的箭头(本地比SVN上多出的文件)

修改完记得跟svn保持一致


(7)蓝色向左且中间有个加号的箭头(SVN上比本地多出的文件)

删除该文件后,再次更新,将svn上文件全部更新下来


(8)灰色向右且中间有个减号的箭头(本地删除了,而SVN上未删除的文件)

也就是说你删除确认后,一定要记得上库,跟svn保持一致


(9)蓝色向左且中间有个减号的箭头(SVN上删除了,而本地未删除的文件)

比对svn库上代码,确定需要删除后,更新svn(删除无用代码)


(10)红色双向箭头(SVN上修改过,本地也修改过的文件)

这个表示本地和svn上都修改过,最好就是把本地修改合并到svn,修改代码前最后先更新

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未禾

您的支持是我最宝贵的财富!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值