版本管理-SVN冲突爆红后如何通过颜色和快捷键准确无误地合并代码(一)
SVN冲突出现场景
如今是一个团结协作的时代,开发一个系统,往往会多人协作共同完成。版本管理是必不可少的,常用的软件有Git,SVN等。今天说一下,SVN管理版本时,如果出现冲突后,如何快速解决冲突。
首先说明一个问题,有一种情况无论如何都不会出现冲突。假如有一个叫qaz
的程序员,他checkout
了版本库,这样他拥有了一个工作副本。然后,他修改了某个文件IMRoot.cs
,commit
到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冲突爆红详细解决方案及可能带来的隐患思考(二)
版本管理-SVN冲突爆红后如何通过颜色和快捷键准确无误地合并代码(一)相关推荐
- Android Studio 打开后无故爆红后解决办法
今天打开AndroidSutudio后表示一脸蒙蔽,项目无故爆红,我本以为是哪里的代码有错导致 报错,于是乎逐个检查,但是并没有发现任何问题,然后CelarProduct,ReBuildProduct ...
- 摆摊神器五菱荣光爆红后,上汽大通房车又成夜市新晋网红
继"摆摊神器"五菱荣光售货车爆红网络后,上汽旗下的大通房车又成为市集夜市中的新晋网红.数据显示,截至目前,上汽大通房车自营租赁平台"房车生活家"已经在上海.成都 ...
- ChatGPT 爆红后,估值 290 亿美元的 Open AI 要被收购?
来源:AI前线 整理:冬梅 OpenAI 被曝就收购要约展开谈判 当地时间 1 月 5 日,据<华尔街日报>报道,有知情人士透露,爆红的聊天机器人 ChatGPT 背后的研究实验室 Ope ...
- JavaScript 爆红后,微软为何还要开发 TypeScript?
开源 TypeScript 在经历过最初微软的内部抵制后,如今终于成长为构建 Web 应用程序的首选语言. 作者 | Liam Tung 译者 | 弯月,责编 | 屠敏 头图 | CSDN 下载自东方 ...
- 农妇做自媒体爆红背后的故事
近日,经媒体报道,农妇做自媒体月入过万引发了网络的关注.在舆论的关注下,工作室承受巨大压力后已停工,部分原创自媒体账号也已经被封号.李传帅承认之前媒体报道有夸大的成分:"一个月也就挣个几万十 ...
- 90后技术宅研发Magi一夜爆红,新一代知识化结构搜索新时代来了?
整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 11 月 7 日,微信群里突然炸了,大家似乎都在讨论一个叫做 Magi 的搜索引擎,据说搜索结果和现在的搜索引擎很不一样,能够输出 ...
- Win10 C盘爆红找出edb文件146G,删除后又出现如何解决
环境: Win10专业版 问题描述: Win10 C盘爆红找出edb文件146G,删除后又出现如何解决 解决方案: 一.更改edb文件到别的磁盘 进入"索引选项"后,点击" ...
- mybatis的映射文件中的mapper空间名不能自定义名字,自定义后爆红
初学mybatis,遇到很多奇葩问题,很多时候第一次编辑的时候没出现任何问题,第二次复习的时候各种报错,疯狂爆红. 这里说的就是映射文件中mapper空间名字不能自定义的问题,第一次操作时 没有任何问 ...
- 鸿蒙生息 不朽凡人,继《不朽凡人》后,鹅是老五又一新作爆红,评分9.8强势霸榜...
大家好,我是小马哥,每天小编推荐的小说都是精心为你们挑选的,高人气高质量,希望你们喜欢,今天推荐修真小说,一起来看看.继<不朽凡人>后,鹅是老五又一新作爆红,评分9.8强势霸榜 第一本:& ...
最新文章
- tidb mysql登录_TiDB 忘记密码如何登陆
- linux sed 选取,linux sed 替换(整行替换,部分替换)、删除delete、新增add、选取...
- 《水泥公司信息管理系统》Access学习心得
- 做diff_Virtual Dom amp;amp; Diff原理,极简版
- 什么是“ rpcsvchost”,以及为什么它在Mac上运行?
- python调用高德地图api 可视化_Python:利用高德地图API实现找房
- 【3】docker-compose
- 开课吧:从事数据分析必备能力有哪些?
- 锐捷长ping_锐捷交换机常用操作命令
- 计算机文化基础十一版百度云,计算机文化基础(高职高专版 第十一版)第一章答案...
- vue 脚手架启动html,vue脚手架项目创建步骤详解
- 在WordPress中使用旋转文字创建“会话”横幅:第2部分
- 3900x做服务器性能怎么样,AMD Ryzen 9 3900X评测:向消费级性能王者宝座进发
- 新赛季上分神器 vivo X70 Pro+首批适配《王者荣耀》120Hz极高帧率
- matlab学霸表白公式,怎么表白:数学函数表白
- php中关于文件操作的面试题,php面试题及答案
- web3:颠覆互联网还是白日梦一场?
- CPA、CPS、CPM、CPT、CPC 是什么?
- 中国移动java面试_中国移动软件工程师面试经验
- 老鼠赛跑游戏(富人不为钱工作)