在之前的正常合并中,我们都是通过将一个修改的子分支合并到我们没有修改的主分支里面,此时我们称这个过程为正常合并

假设此时我们将一个修改的子分支合并到我们修改了的主分支里面,那么此时便有可能发生冲突合并。

冲突合并产生的原因?

答:是两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。

那么此时我们来模拟下冲突合并发生的过程以及解决的办法:

1:首先我们在master分支下使用vim 文件名修改我们的hello.txt文件:修改如下所示

此时我们在倒数第二行加上我们的master test

 修改完成后,此时我们还是按照之前介绍的步骤将我们修改后的hello.txt文件上传到master分支下的本地库,具题步骤不做详述,直接上截图:

2:完毕后此时我们切换到我们的hot-fix分支下去修改我们hot-fix分支下的hello.txt文件,过程如下所示:

此时我们在倒数第一行加上我们的hot-fix test,完成对hot-fix分支下的hello.txt文件的修改,继续重复之前的操作,将修改后的hello.txt文件上传到hot-fix分支下的本地库

3:此时完成对hot-fix分支下的hello.txt文件的修改以及上传后,此时我们继续回到我们的master主分支下,进行我们分支的合并

输入git merge hot-fix后此时便会出现我们的分支冲突,原因是我们的master分支和我们的hot-fix分支此时都对我们的hello.txt文件进行了修改,导致当我们将hot-fix分支合并到我们master分支的时候,git不知道使用两个分支的哪一套针对hello.txt文件的修改方案,那么此时便会发生分支冲突。

如下图所示:会出现一个conflict英文字母以及当出现冲突后,我们括号内的字母不再是master,而是master|MERGING,表明一直在合并中,但是没有成功。

并且此时我们输入git status命令后我们会发现此时的hello.txt文件是没有合并成功的:both modified hello.txt表示两个分支都修改了hello.txt文件,此时git不敢自动合并分支了,只能我们人为手动合并分支代码了。

4:为了解决我们的冲突合并的问题,此时就需要我们去人为决定新代码的内容:

第一步:此时首先使用vim hello.txt命令先手动打开我们的文件,此时我们会发现跟之前有一些不同之处:

此时我们会发现三个特殊的符号

<<<<<<>>>>>>中间为要合并进master分支的代码

第二步:为了解决我么分支冲突的问题,此时需要人工修改我们的代码,之前我们修改了hot-fix分支下的hello.txt文件中的最后一行,修改了master分支下的hello.txt文件的倒数第二行,此时我们要将hot-fix分支合并到master分支下,那么我们的hello.txt文件此时倒数两行都应该要被修改,那么此时我们就按照我们预期的效果来进行人工修改,删除特殊符号决定要使用的内容即可:

修改完成后,输入:wq保存后,此时我们仍需要将我们人为修改的hello.txt文件上传到我们的暂存区以及我们的本地库中

第三步:将我们人工修改后的hello.txt文件上传到暂存区:如下图所示:我们会发现此时我们的冲突合并还没有解决,因为此时括号内还是有MERGING

第四步:此时继续将修改后的hello.txt文件提交到本地库中去,但是此处需要注意的是之前我们将文件提交到本地库的命令为git commit -m "日志信息" 文件名,

但是此处为了解决我们分支的合并冲突,此时不能加文件名,这样才能解决我们的冲突合并:如下图所示:

1:假设此时我们带上了文件名的话:会报一个致命的错误:

2:假设此时不带上我们的文件名的话,此时便解决了我们的冲突合并,并且此时我们括号内的master|MERGING变成了master,说明此时成功了。

第五步:使用vim hello.txt命令查看我们的hello.txt文件内容:发现此时分支代码合并成功,是我们所预期的效果。

注意:此时我们合并的代码只是覆盖了原本我们主分支master下的hello.txt文件内的内容,但是我们子分支hot-fix分支下的内容并没有发生改变,如下图所示,我们可以看到我们的子分支hot-fix中的hello.txt文件内容并没有发生改变:

Git分支--合并分支(冲突合并)相关推荐

  1. Git 笔记——如何处理分支合并冲突

    1.前言 学习使用 Git 也有一段时间,但一直都是把 Git 当作一个代码仓库,使用的命令无非就是 clone, add, commit ,往往课程作业也没有过多人合作开发,没有体验过 Git 的分 ...

  2. idea操作git时 合并分支+解决冲突

    总结一.IDEA使用Git合并到Master分支&冲突解决步骤 1.合并基本步骤 首先切换到master分支 在要合并的分支上右键 Merge into current 合并成功后,再选择Pu ...

  3. idea+git合并分支解决冲突及详解

    1.什么是冲突 冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致.读起来有点绕,结合下面的案例理解. 从上面对冲突的定义来看,冲突时发生在同一个文件上的. 2.生产上冲突的场景 常见冲突的 ...

  4. git merge本地合并分支出现文件冲突处理方法

    好久不见,我是今越.和大家分享下开发工作当中遇到合并文件冲突问题的处理方法. git merge本地合并分支出现文件冲突的处理步骤总结: 第一步,根据 git 提示,找到冲突的文件,解决冲突(注意:冲 ...

  5. 【Git】Git 分支管理 ( 解决分支合并冲突 | 推送主版本和分支版本到远程仓库 | 合并分支出现文件冲突 )

    文章目录 一.推送主版本和分支版本到远程仓库 二.合并分支出现文件冲突 一.推送主版本和分支版本到远程仓库 执行 git push origin master 命令 , 将 master 分支推送到远 ...

  6. idea git 合并分支 冲突处理

    操作演示 场景:两个分支,一个master主分支,一个是1.0版本(这里我叫次分支也就是要合并到主分支的分支),先将次分支上的数据合并到主分支上,没有冲突的数据会自动合并,有冲突的会提示你解决冲突. ...

  7. GIT分支合并与冲突解决

    git中的分支十分轻量,因此我们在使用git的时候会频繁的用到分支,不可避免的需要进行分支合并. 在git中合并分支有两种选择:merge 和 rebase.但是,无论哪一种,都有可能产生冲突. 一. ...

  8. git分支及如何解决合并冲突问题

      几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug 修改.开发新的功能,以免影响开发主线. 1. 查看本地分支 命令:git bran ...

  9. git提交本地项目gitlab合并分支提交代码合并分支时的冲突解决git拉取新项目

    总结:选中右键 git add commit pull 运行 push 一.把dev(主分支)合并到本地自己的分支 1.选中要提交的对象(可以是整个项目,也可以是单模块提交) 2.右键-Git-Add ...

最新文章

  1. 现在,用音频也能指挥GAN生成图像了
  2. 奇异值的物理意义是什么?
  3. memcached安装、使用
  4. Android----Fragments详解
  5. SGU 222 Little Rooks
  6. ebs 选择excel输出 后缀 html,Oracle EBS XML报表中数字的处理(Excel输出)
  7. Redis 查看key的有效时间
  8. mac下如何把本地项目上传到Github
  9. Diamond types are not supported at language level ‘5‘ 解决方法
  10. 加密狗破解教程-数据抓取工具
  11. java高校选课系统博客,学生选课系统
  12. java在线截图_JAVA之网页截屏
  13. Tableau:如何自定义形状
  14. 异常图标导致转码失败
  15. OAuth安全相关问题
  16. 超形象理解CDN,Spring cloud,Dubbo总结
  17. GB28181协议实现系列之----PS流封装(6)
  18. 利用python自动生成证件照
  19. 成人生命周期中的脑白质微结构:使用高级扩散模型和脑龄预测的纵向和横断面的混合研究
  20. 了解ThinkPad指纹识别系统设置

热门文章

  1. Java习题练习:超大玉螺旋丸
  2. KVM-virsh详解
  3. IETF中与NAC相关的工作组——NEA
  4. Windows系统安全相关操作——值得拥有
  5. 基于汇编实现的贪吃蛇游戏
  6. 放入一些平时收藏的网址(如果支持chrome式的书签管理或折叠式菜单进行分类就好了)
  7. 《第一财经周刊》封面文章:那些忧伤的年轻人
  8. extjs 树刷新_ExtJS 4 树
  9. 实验报告-python文库_python白盒考试实验报告
  10. c/c++ 语言中的字符串结束符 '\0'