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解决冲突的方法
SVN管理代码工具在群组合作开发的过程中,若多人同时修改一个文件,就会出现冲突的情况. 冲突演示: 有A.B两个用户,他们各自从svn服务器中检出了file.txt文件,此时A.B.服务器三个地方的f ...
- linux上SVN解决冲突的办法
转载:http://www.aixchina.net/club/thread-25902-1-1.html 这里,先说说冲突解决. 怎么会发生冲突呢? 两个人修改了不同文件?不会有冲突,他们不相关. ...
- linux下svn解决冲突
1. 使用svn status + 文件路径+文件名 查看文件或目录的状态(该状态可自行进行百度),属性状态为'C'的表示,改文件或目录处于冲突状态 2. 使用svn resolve --accept ...
- svn解决冲突 Aborting commit: 'XXXXXXXX'remains in conflict错误
如果你遇到冲突,三件事你可以选择: “手动”合并冲突文本(检查和修改文件中的冲突标志). 用某一个临时文件覆盖你的工作文件. 运行svn revert <filename>来放弃所有的修改 ...
- svn解决冲突和commit
当使用svn出现 svn: E155015: 提交失败(细节如下):svn: E155015: 提交终止: “/home/test.file” 处于冲突状态 解决办法: svn resolved /h ...
- svn 解决冲突
当svn update时提示如下: D C main.go > local file unversioned, incoming file add upon updateSummary of c ...
- svn解决冲突问题
1.在linux的branchs下创建了一个新的分支branch_2后,commit.提示: 2.这是把/my_branch/index.html删除后svn update也不能解决问题 3.到myb ...
- 版本管理--svn解决代码冲突
高级的svn解决冲突的方法: 选择正在冲突的文件,右键,选择Edit confilicts,这时候出现一个弹框, 看你实际的需要用自己的代码,还是用同事的代码,或者合并起来.最后点击Mark as r ...
- [转]SVN版本冲突解决详解
原文地址:http://blog.csdn.net/windone0109/article/details/4857044 版权声明:本文为博主原创文章,未经博主允许不得转载. 版本冲突原因: 假设A ...
随机推荐
- SSRS奇怪报错Could not update a list of fields for the quer.
今天遇到一个奇怪的问题,SSRS我觉得是个半成品,很多东西都搞不了.写了一段SQL,本来SQL写法都有点怪了,如下 WITH TMP_A AS (SELECT *,ROW_NUMBER() OVER( ...
- 解决Could not load file or assembly CefSharp.Core.dll的问题
这个问题的中文提示是: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项.找不到指定的模块 具体原因是因为CefSharp运行时需要Visual C++ Redistrib ...
- 【转】android IDE——通过DDMS查看app运行时所占内存情况
在Android内存优化方面,我们不可能做到没有大内存的占用情况. 所以有时候要清楚我们的app到底占用了多少内存,哪一步操作占用了多少的内存. 这时候,android的ddms中提供了一个工具,是可 ...
- rsyslog和logrotate服务
参考: http://www.lampbo.org/others/opensource/rsyslog-config-file-detail.html http://bangerlee.blog.ch ...
- oracle ORA-20011: Approximate NDV failed: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
Mon Jun 11 21:59:52 2018LNS: Standby redo logfile selected for thread 2 sequence 132997 for destinat ...
- win7重装系统
读了四年大学的计算机专业,说自己不会重装系统真的会笑掉大牙,但人家是女生,怕东怕西的,害怕弄坏自己的电脑,毕竟上计算机课最重要的是电脑,嘿嘿,其实是为了开wifi和看电视剧.今天终于有一台闲置的计算机 ...
- python:利用smtplib模块发送邮件
自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 参考代码:send_mail.py 一.python对 ...
- [julia]本地离线安装package
1.引言 julia最近十分受关注,其结合了python的通用性,Ruby的动态性,C的代码运行速度,R的包管理和数据分析功能,perl的字符串处理能力,lisp的宏能力,matlab的矩阵计算规则, ...
- Luogu4219 BJOI2014 大融合 LCT
传送门 题意:写一个数据结构,支持图上连边(保证图是森林)和询问一条边两端的连通块大小的乘积.$\text{点数.询问数} \leq 10^5$ 图上连边,$LCT$跑不掉 支持子树$size$有点麻 ...
- DIV实现水平或垂直滚动条
添加样式: 在html中,需要创建2层div来实现.一个div包含另一个div: 效果: