`

SVN合并时候的冲突

阅读更多

1.先在主干上创建一个test.txt文件,提交。

2.拉一个分支。

此时,主线、分支两边代码应该是一模一样的。

 

主线:


 分支:

 

这时候,主线进行开发:

修改了test.txt:

在3333后面添加了3333test,

在4444后面添加了4444test,

在文件最后添加了7777test,并且提交。(如图)


 

新增了computer.txt文件


 

新增了user.txt文件


 
 

同样的,在分支也进行开发:

分支修改test.txt文件

 

新增computer文件


 

新增user文件


 

这时候将主干、分支修改的代码都提交。

提交主干

 

提交分支 


 

再对主干代码进行合并分支的操作,会出现如下冲突:

其中提示,

test.txt文件冲突(两边修改了同一行代码)

computer.txt和user.txt树冲突(都新增了文件)


 

解决文件冲突:


 

左上角(Theirs):代表合并版本的样子

右上角(Mine):代表本地版本的样子

下方(Merged):代表合并后的样子

 


 橙色部分:代表原来的代码(参考用)

 亮黄色部分:代表svn自动合并好的部分(自动解决)

 红色部分:代表两边代码冲突的部分(需要人工解决)

 

ps:如果只看Theirs或者Mine,对比上面分支、主干提交时候的截图,可以发现

除开橙色行、灰色行,对应提交后的最新部分的代码。而橙色行则是该次提交之前,所在行代码的原来样子。

 

合并的时候,一般是框选(Merged部分),我们先观察Merged部分的第4行。

通过上面主线、分支的提交,我们可以知道,我们在主线上第4行添加了4444test,在分支上第4行添加了4444branch,这时候我们就需要进行合并后的代码判断,是否需要主干、分支代码都保留,还是只保留主干、只保留分支。

右键,Use text block分别有四个选项

1.用Theirs(用分支)

2.用Mine(主干)

3.先Mine后Theirs(先主干,后分支)

4.先Theirs后Mine(先分支,后主干)

 

我们这边先以3为例,将主干分支代码保留。

 

然后我们再对Megred的8、9行进行处理,通过对比可以发现,我们在主干上最后添加了7777test,分支最后添加了8888test,这里因为是在末尾行,svn自行判断为是更改了最后一行,而不是在原来的最后一行的基础上添加了一行,所以svn认为的改动是两行改动。

 

如果这时候我们选择3.先Mine后Theirs,会出现下图情况,发现6666的那段代码重复了两次


 

这时候就需要人工仔细的排查了,是否需要两次的6666代码,我们这里不需要,所以在Merged中,我们删去第11行的6666,得到如下图的最终合并文件。(看到橙黄色不要担心,Theirs、Mine、Merged中橙黄色没有行号的代码只起到参考作用,不会存在于文件中)


 

 

解决树冲突:


树冲突的解决相对单一,只能选择Accept current working copt state (mark as resolved) ,即接受当前工作空间的副本(并标记为解决)。点击后,就解决了冲突。

这时候我们去合并后的内容中看这个树冲突的文件,发现依然是合并前的文件。


 所以可以得出结论,树冲突并不会更改本地的文件,他只会告诉你冲突,这时候需要人工的去排查代码。

ps:树冲突不仅限于新增*新增,也可以是  新增*修改、新增*删除、修改*删除

 

当所有的冲突解决完毕后,就可以提交主干代码啦!

 

 

 

另外,颜色部分的内容可参考下面博主的文章

http://blog.csdn.net/daigualu/article/details/68936061?ref=myread

 

另外命令行参考这里:

http://www.jianshu.com/p/e3cc83ca512d

  • 大小: 8.1 KB
  • 大小: 8.3 KB
  • 大小: 8.6 KB
  • 大小: 1.6 KB
  • 大小: 1.6 KB
  • 大小: 4.8 KB
  • 大小: 1.7 KB
  • 大小: 1.6 KB
  • 大小: 13 KB
  • 大小: 12.6 KB
  • 大小: 45.5 KB
  • 大小: 137 KB
  • 大小: 131.3 KB
  • 大小: 131.3 KB
  • 大小: 40.9 KB
  • 大小: 8.9 KB
  • 大小: 8.2 KB
  • 大小: 208 Bytes
  • 大小: 202 Bytes
  • 大小: 202 Bytes
分享到:
评论

相关推荐

    svn 合并、冲突及常用功能详解

    **svn合并** `svn merge`是Subversion(简称svn)中的关键命令,用于将一个分支或标记的修改合并到另一个分支。在版本控制系统中,合并是协同开发的核心操作,它允许团队成员同步各自的工作,避免代码冲突。以下是...

    SVN分支合并到主干 冲突处理

    ### SVN合并 合并分支到主干是将分支上的改动整合到主干的过程。这个过程可能涉及多个提交,所以需要确保每次合并都是基于最新的主干代码。合并命令如下: ```shell svn merge ...

    SVN解决冲突(合并别人的修改)

    在多人协同开发的项目中,版本控制显得尤为重要,但同时也可能会出现代码合并冲突的情况。当两个开发者对同一文件的不同部分做了更改并试图提交到版本库时,SVN会标记出这些冲突,要求开发者手动解决。本文将详细...

    SVN合并操作说明

    SVN合并操作是版本控制中的一个核心功能,允许开发者将分支上的改动合并回主干(trunk)或在分支之间进行改动的同步。本文档将详细介绍如何在SVN中执行合并操作以及解决可能出现的合并冲突。 首先,合并操作需要...

    svn分主干合并,让你分主干合并立马搞定

    总结来说,SVN 分支合并是一个涉及创建分支、获取本地副本、查找合并起点、合并改动、解决冲突以及提交更改的过程。这个过程对保持项目代码的同步和一致性至关重要。在实际操作中,应遵循良好的版本控制实践,例如...

    EclipseSVN冲突详细解决方案.docx

    EclipseSVN冲突解决方案 EclipseSVN冲突解决方案是指在使用Eclipse和SVN进行版本控制时,如何处理文件冲突的问题。文件冲突是指多个开发者同时修改同一个文件,导致文件内容不同步的情况。 在EclipseSVN中,文件...

    Eclipse svn创建分支、合并、切换讲解

    通过本文的讲解,已经详细介绍了 Eclipse SVN 中创建分支、合并、切换的操作步骤,以及冲突解决的方法。这些操作步骤将有助于提高项目的开发效率和质量。本文的内容已经足够详细和丰富,希望能够满足读者的需求。

    SVN解决文件冲突conflict的方法_类文件冲突

    在使用版本控制系统如SVN...总之,SVN冲突的解决是一个需要谨慎处理的过程,它需要理解SVN的工作原理以及如何合并和管理代码更改。通过及时更新、手动合并和确认提交,团队成员可以有效地协作并避免不必要的冲突。

    svn代码合并步骤

    ### SVN代码合并步骤详解 #### 一、合并方向的重要性 在进行代码合并之前,明确合并的方向至关重要。合并的方向决定了哪些代码会被更新,并且会影响到合并后的代码库的状态。常见的合并方向有以下几种: - **分支...

    svn版本冲突解决

    2. 在冲突的文件上(选中文件--右键菜单—TortoiseSVN—Edit conflicts(解决冲突)),出现如下窗口:Theirs 窗口为服务器上当前最新版本,Mine 窗口为本地修改后的版本,Merged 窗口为合并后的文件内容显示。...

    SVN 分支与合并详解

    4. SVN合并: 当分支工作完成,需要将改动合并回主线。合并通常包括两个步骤:首先,更新主线工作副本以获取最新的代码;然后,将分支的改动合并到主线。 ``` # 更新主线工作副本 svn checkout ...

    SVN冲突解决方案.docx

    SVN冲突解决方案 SVN(Subversion)是一种版本控制系统,用于管理软件开发过程中的源代码和文档。在多人协作开发项目时,SVN可以帮助团队成员之间进行协作和版本控制。但是,在使用SVN时,也会遇到冲突问题,本文将...

    svn版本之间的合并问题

    #### 一、SVN合并机制简介 SVN的合并操作主要涉及到两个或多个版本间的差异比较和整合。当一个文件或目录在两个不同的分支中都有改动时,SVN会尝试自动合并这些改动。然而,当合并过程遇到无法自动解决的冲突时,即...

    开源版本控制SVN 树冲突、目录丢失问题及解决机制探讨

    例如,如果在一个分支中创建了一个新目录,而在主线中删除了同名目录,那么在合并这两个分支时,SVN无法确定如何处理这个目录,从而导致树冲突。 **目录丢失问题**通常发生在用户误操作后,如直接在工作副本中删除...

    SVN版本冲突解决详解

    SVN 版本冲突解决详解 SVN 版本冲突是指在多个用户同时修改同一个文件时,可能会出现的冲突问题。下面将详细解释 SVN 版本冲突的原因、现象、解决方法和降低冲突解决的复杂度。 版本冲突原因: 在 SVN 中,当多个...

    Tortoise SVN 版本冲突处理

    5. **合并冲突**:一旦选择了版本,预览区中的冲突标记(通常是问号)会被替换为实际的代码行。你可以进一步编辑合并结果,使其符合你的需求。 6. **保存并标记为已解决**:完成所有冲突区块的处理后,保存文件。接...

    SVN使用手册(合并版)

    ### SVN使用手册(合并版)知识点详述 #### SVN简介 - **SVN**(Subversion)是一种广泛使用的版本控制系统,主要用于代码管理、版本控制和变更跟踪。SVN允许开发者们将项目的历史版本保存下来,并且能够追踪每一次的...

    svn ( 解决冲突 )confict

    3. **合并(Merge)**:如果检测到冲突,SVN会提示Harry下载其他用户的更改,并允许他手动合并这些更改,生成最终版本的文件A*。完成合并后,Harry将文件A*提交至仓库。 这种方法更适合处理文本类型的文件,因为...

    SVN简介及使用、以及对冲突的避免和解决

    `svn status -u`命令可以检查潜在的冲突,而`svn update`会显示冲突信息,如U表示文件已更新,G表示已合并更新,C表示存在冲突。 解决冲突时,Subversion会在冲突文件上标记,并提供`.mine`、`.rOLDREV`和`.rNEWREV...

Global site tag (gtag.js) - Google Analytics