SVN冲突出现场景

如今是一个团结协作的时代,开发一个系统,往往会多人协作共同完成。版本管理是必不可少的,常用的软件有Git,SVN等。今天说一下,SVN管理版本时,如果出现冲突后,如何快速解决冲突。

首先说明一个问题,有一种情况无论如何都不会出现冲突。假如有一个叫qaz的程序员,他checkout了版本库,这样他拥有了一个工作副本。然后,他修改了某个文件IMRoot.cscommit到SVN,并且这个文件保证不会有其他人在他们的工作副本修改并提交到SVN。这种情况下,无论qaz 如何修改IMRoot.cs ,在commit时都不会发生冲突。

以上说了一种不会出现冲突的情况,那么什么应用场合可能会出现冲突呢?假如程序员wsx 他会修改文件 IMRoot.cs 并commit 到SVN,此时可能会引发冲突。

实例分析

下面,我们根据实际应用场合,模拟出现冲突,到如何通过SVN提供的Edit Conflicts 界面,通过颜色标识和操作按钮,快速准确地合并解决冲突。

开始,IMRoot.cs 文件主题内容是这样的,命名空间为了理解方便省略掉。

qaz 在文件的第14 行做了修改,其他的未作任何改动,并且将修改commit到了SVN。

wsx 在在第19行做了修改,修改如下,

并且在提交前update了(注意因为这个文件已经被qaz 做了修改,所以wsx 如果commit前不update,SVN是不允许提交的),然后commit,此时,SVN不会引发冲突,因为修改不是在同一行。SVN将qaz 的修改合并到了wsx 拥有的工作副本中,合并后文件如下所示,

为了故意引发冲突,假设qaz 和 wsx 同时都修改了第29行。前者修改第29行为如下,并且commite 到了SVN中

后者修改也同时修改了这一行,这意味他并没有update 这个文件,

然后他commit 到SVN时,提示先update ,紧接着出现冲突,如下所示,

此时,找到这个文件,右键选择Edit conflicts 按钮,弹出编辑冲突的界面,这才到了重点!

从上图可以看到,主要有3个子窗口组成,左上Theirs 为SVN版本库中(也就是qaz 刚才修改提交到SVN的版本),右上 Mine 为 wsx (正在提交到SVN发现冲突的他)的工作副本文件,下方为合并他俩的文件后的显示窗口。

以下为这3个窗口的局部视图,依次为左上,右上,下方,

 
左上

 
右上


下方

当面对以上3个窗口时,还是容易让人发蒙,尤其是文件比较复杂,冲突一大片,各种颜色掺杂在一起,不知如何下手,害怕把其他文件意外破坏和文件合并错误。那么怎么办呢?我们不妨先从简单的文件冲突入手,彻底理解各种颜色的含义,冲突行是如何标记的,这样我们才敢大胆地使用这个界面进行代码合并操作,不用担心合并后,把别的文件无辜干扰了或者出现合并错误的问题。

仔细观察以上3个窗口,我们发现,28行和29行之间多出来一行,即橙色行,并且Theirs 和Mine 都含有这一行,这个是未冲突前,此行的内容,即刚开始的版本。第29行是爆红行、冲突行,相应字段还是黄色警示,并且在第3个窗口(下方窗口)第29行全是?????这种符号,意味着无法合并他俩对此行的同时修改,需要我们判断,要么采取Theirs 的,要么采取Mine 的,要么采取上一版本,要么重新商量一个相同的。SVN也提供了几个方便的右键按钮,提示如何做出这些选择,

use this text block : 选取选中行的内容 
use this whole file :选取选中行所在文件的全部内容 
use text block from mine before theirs :先用Mine的内容,后面接着用theirs的

假如第29行我们想采用qaz 的修改,那么,我们在左上窗口,选中第29行,右键选择 use this text block ,然后下方的视图变为如下,

第29行由一行??????变为左上窗口第29行的内容,颜色由爆红变为了浅绿色。这时候注意观察,在上一行橙色显示内容代表什么意思,注意最左侧有个 “-”提示,代表此行不会纳入合并文件中。

假如第29 行,我们都想纳入qaz 和wsx 的修改,此时我们在左上窗口选择,use text block from mine before theirs ,即先用Mine的内容,后面接着用theirs的,选择后下方窗口合并内容如下,

可以看到,第29行,先显示Mine的,然后显示Theirs的。

这些操作后,我们点击上方的Mark as Resolved 按钮,然后保存即可。这样冲突就被解决掉了。然后wsx 再commit 自己的内容到SVN。

冲突深度详细解决方案及可能带来的隐患思考

SVN 解决冲突问题相关推荐

  1. linux上SVN解决冲突命令

    svn resolve --accept working abc.c (这条命令会删除abc.c.mine abc.c.r1234 abc.c.r1235等文件) 注意,此处的accept前是双连字符 ...

  2. SVN解决冲突的办法

    解决版本冲突的命令.在冲突解决之后,需要使用svn resolved来告诉subversion冲突解决,这样才能提交更新.冲突发生时,subversion会在Work Copy中保存所有的目标文件版本 ...

  3. SVN解决冲突Resolving Conflicts

    1.SVN产生冲突的原因: 有时候你从仓库中更新文件是会发生冲突,当两个或者更多的开发人员多同一个的某几行做了修改,就会产生冲突.因为Subversion对你的项目一无所知,它会把冲突留给开发人员来解 ...

  4. 【SVN】svn解决冲突

    1.预测冲突 svn status -u 预测svn update命令将从服务器带来的更新. 2.先更新 $ svn update U INSTALL G README C bar.c U和G没必要关 ...

  5. linux下svn解决冲突

    1. 使用svn status + 文件路径+文件名 查看文件或目录的状态(该状态可自行进行百度),属性状态为'C'的表示,改文件或目录处于冲突状态 2. 使用svn resolve --accept ...

  6. SVN解决冲突命令resolve和resolved

    使用如下命令解决冲突 svn resolve index.html 手工编辑修复,而不是命令解决冲突,需要执行如下命令通知SVN服务器冲突已解决 svn resolved index.html 注意一 ...

  7. svn解决冲突Postpone , Accept base, Accept incoming, Reject incoming, Accept incoming for conflictsu区别

    Postpone(推迟):暂时不处理冲突,先将其标记为未解决状态,以便日后再次进行处理. Accept base(接受基础版本):使用服务器上的基础版本,放弃本地修改,将其标记为已解决状态. Acce ...

  8. SVN解决冲突的几种情况

    SVN是非常实用也好用的版本管理工具,但不是万能的,有时候还需要你手动解决. 一般在你准备提交一个新版本时,首先update一遍,有时候update完之后发现跟本地版本有冲突,这时候,在有冲突文件的地 ...

  9. svn解决冲突,storyboard打不开怎么办

    提交SVN的时候,如果有冲突,解决了提交自然是再好不过.但是如果手贱直接点击了 resolve 然后就提交了,就会发生工程打不开的情况. 解决办法:在svn提交界面,打开工程文件,在 .xcode.x ...

最新文章

  1. Servlet、Http、Request
  2. 从sql中image类型字段中导出图片
  3. 围棋人机大战明日上演,这份观赛指南请留好
  4. TImm 笔记: 训练模型
  5. java的时间变化_通过java记录数据持续变化时间代码解析
  6. Visual Studio Code的用户设置相关
  7. idhttp.post方式 调用datasnap rest 远程方法
  8. PostgreSQL数据库远程连接功能的开启
  9. [Ext JS 7]基于NPM的开发
  10. directx sdk march 2009_小视科技极致轻量级模型人脸识别sdk支持活体检测总模型仅8M...
  11. lucene的基础入门
  12. dbf转成excel_dbf转换成excel下载|dbf转换成excel v1.0-520下载站
  13. GX Works2使用问题记录
  14. android viewholder模式,为什么在ViewHolder模式中ViewHolder类应该是静态的?
  15. Scrapy爬取天眼查首页热门公司信息,可视化分析这些热门公司
  16. Windows11 出现桌面管理器dwm.exe占用内存过高的解决方法
  17. IK 分词器空格支持
  18. u盘只有盘符没有容量打不开-U盘无法识别,无法格式化
  19. Altium Designer Summer 09绘制3D封装库
  20. c语言200-500完数,C语言求完数(完全数)(详解版)

热门文章

  1. Vue --控制台出现 Download the Vue Devtools extension for a better development experience
  2. car-eye 车辆管理系统中平台架构(平台设计)
  3. 高德地图的地理空间数据可视化(Loca)
  4. 微信小程序生命周期及(bindtap和catchtap)点击事件
  5. 磨砺自己,静待花开——记南大通用GBase 8a培训
  6. 国内外目前比较流行的CMS大全(持续更新~)
  7. 【机器学习】支持向量回归
  8. python 曲线平滑滤波
  9. [vue] nodejs安装教程
  10. OpenJDK下载地址推荐