1.什么是冲突

冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致。读起来有点绕,结合下面的案例理解。

从上面对冲突的定义来看,冲突时发生在同一个文件上的。

2.生产上冲突的场景

常见冲突的生产场景如下
更新代码
提交代码
多个分支代码合并到一个分支时
多个分支向同一个远端分支推送代码时
  git的合并中产生冲突的具体情况:
  <1>两个开发者(分支中)修改了同一个文件(不管什么地方)
  <2>两个开发者(分支中)修改了同一个文件的名称
  注意:两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。

总结:上面各种情况的本质都是,当前文件与合并文件不一致,因此不论哪种情况其解决冲突的方法是一样的。

3.idea中解决冲突

模拟场景:
  假设有另个开发人员开发同一个项目,并且编写同一个文件,工作流程如下:

1.01号程序员先上传文件conflict.txt,并继续在conflict.txt上写代码;

2.02号程序员更新项目代码,并在conflict.txt上写代码,写完后,在提交到远程服务端;

3.当01号程序员把写完后,准备提交代码了,这时的正规操作手法,先更新在提交,但是在更新的时候必然会冲突,因为这时候更新的代码conflict.txt与本地仓库代码conflict.txt不一致

提交前,我要更新,冲突了:

解决方案如下:

  • accept yours:代表以自己的为准;
  • accept theris:代表以更新下来的文件为准;
  • merge:代表手动合并

一般解决冲突我们都是选择merge

将需要的内容点击:">>"既可以合并内容到result中,不需要的内容点击“x”即可,合并完成后点击apply即可。

值得注意的是,最将所有的“x >>”符号都要处理完,不需要的点击“x”,需要的点击“>>”
  最后,不论是什么场景下产生的冲突解决方法是一样的。

  1. 详细步骤

1、 切换分支
1)在idea页面右下角点击分支名
在这里插入图片描述

2)在git 分支选择框中选择项目一步步选择需要的分支
这里先演示切换到master主干分支,点击Checkout切换
在这里插入图片描述

3)切换master主干分支成功
在这里插入图片描述

2、合并分支
1)master合并bug001分支
2.1.1. 拉取分支步骤:在项目上右键,Git -> Repository -> Pull

2.1.2. 在更新代码的时候,选择001分支代码,合并到当前分支master,点击Pull

2.1.3. 更新结果,显示37个文件已更新

2.1.4. 从001分支更新代码到当前分支master后,已存到本地仓库,因此需要把本地仓库完整的master分支代码Push到远程分支master分支;Git -> Repository -> Push

2.1.5. 点击Push后,出现详细的推送说明,点击Push

2)develop合并master分支
2.2.1 切换develop分支,原则上develop分支的代码必须和master主干保持一致

2.2.2. 拉取分支步骤:在项目名上右键,Git -> Repository -> Pull,参考2.1.1
先更新远程develop分支到本地,看看有没有需要更新的代码,有的话直接更新

2.2.3. 显示 no items,说明没有需要更新的代码

2.2.4 master分支已经最新的,因此需要把master分支代码合并到develop分支
Git -> Repository -> Pull,选择master分支代码,合并到当前分支develop,点击Pull

更新结果为37文件

2.2.5. 把本地仓库develop分支的代码提交到远程分支develop;Git -> Repository -> Push

显示Push成功

3)Hebei合并develop分支
2.3.1. 切换Hebei分支

切换成功

2.3.2 更新本分支代码,拉取分支步骤:在项目名上右键,Git -> Repository -> Pull,参考2.1.1


2.3.3 合并develop分支代码到当前分支hebei; Git -> Repository -> Pull

2.3.4. 更新时出现冲突文件(20200604 更新,内容是最新的,和上面develop分支内容已不一致)
解决冲突:
选中文件,点击右侧的Merge…

2.3.5. 冲突文件界面解释
冲突文件界面,分为三个部分,最左侧是本地代码;中间是解决冲突后的最终结果文件;最右侧是远程分支的代码
通过比较文件内容,合并需要的代码到中间的位置,最后点击Apply就完成了
解决步骤如下:





更新后的结果为5个文件,其中包含一个解决冲突后的文件

2.3.6. 因为在合并develop分支代码到当前分支hebei 时出现冲突,并且解决冲突后,需要先把代码提交到本地仓库,再把本地仓库的代码提交到远程分支。

右击项目名:
Git-> Commit Directory…
填写适当地 提交信息,然后点击Commit and Push

Commit and Push解释:
先把本地代码提交到了本地仓库,然后等待片刻会自动弹出Push的窗口,再把本地仓库代码推到远程


2.3.7 查看提交信息,然后点击Push,即可把代码提交到远程分支。

当然以上可以用merge into current

5.关于冲突的个人心得

多人协作开发的时候,如果出现了你没有改过的文件跟你冲突了,一定要去找到当事者,说清楚是如何冲突的;

然后协商解决,千万不要擅自拉别的分支去试图解决冲突,或找文件覆盖,更或者以自己的文件为准.

同时记住,解决了之后,要add 和 commit 最后push.为保证万无一失,最后在冲突都解决之后,重启项目;

保证至少不会有立即奔溃的现象发生.然后才去提交,push.

提交的时候,一定要保持清醒,先搞清楚自己要提交的文件之间的关系,然后再提交,这样才不会有文件缺失的问题,造成奔溃.

如果任务比较多,又开了多个分支,分别进行开发,再次强调,一定要清楚自己在各个分支上做了什么,自己要提交的是什么.最好是能做个详细的笔记,没有把握宁愿不要去提交到生产服务器.

提交代码的时候不要走神,因为这是一个神圣的时刻!

  1. 工作中如何使用

master分支和生产版本代码一直保持一样。每次批次版本上线后,把该批次功能分支合到master分支,然后master分支合到dev分支,再把dev分支合到各个功能分支。如果有多个功能分支同一批次需上线,把这几个分支合到test分支,test分支经过所有测试后,具备上线条件,作为批次功能分支进行打包,部署到生产。

idea+git合并分支解决冲突及详解相关推荐

  1. git 主干修改合并到分支_idea+git合并分支解决冲突及详解步骤

    Git分支详解参考: 分支管理组成 1.1.master主干 在版本管理中,代码库应该仅有一个主干.此主干是和当前生产保持一致的,是可用的.稳定的可直接发布的版本,不能再主干上进行任何开发操作.git ...

  2. idea+git合并分支解决冲突及详解步骤

    Git分支详解参考: https://blog.csdn.net/su1573/article/details/91988523 1. 切换分支 1)在idea页面右下角点击分支名 2)在git 分支 ...

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

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

  4. git合并分支产生冲突解决方案

    产生冲突 冲突产生的表现: 后面状态为 MERGING 冲突产生的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改. Git 无法替 我们决定使用哪一个.必须人为决定新代码内容 ...

  5. git merge合并分支解决冲突

    Question:                                                                                           ...

  6. git合并分支后,删除分支_使用git删除合并的分支

    git合并分支后,删除分支 It's common courtesy to keep your git branch list clean, especially when colleagues ne ...

  7. git合并分支时如何解决冲突

    在项目开发过程,我们合并分支时经常会碰到冲突的问题,下面通过一个简单的例子演示下冲突是如何产生的以及如何去解决冲突. 1.冲突的产生 1.1.主干分支代码 在主干分支有两个文件 main.cpp #i ...

  8. 解决git合并分支时 报merging

    merging出现代表代码合并时出现的冲突* git reset --hard head --冲突时,代码使用本地的 git reset --hard 合并分支名 --冲突时 代码使用合并分支的 如果 ...

  9. git命令及git合并分支进行多人协作

    git命令及git合并分支进行多人协作 git命令大全 git的工作区.暂存区.本地仓库和远程仓库 git常用命令 git revert 和 git reset的区别 修改默认分支 合并分支 Git分 ...

最新文章

  1. android 手势放缩_AIR Android:放大与缩小手势
  2. google浏览器的地址栏(url)和文本框中英文字母都是全角
  3. MPB:EGFP荧光标记大肠杆菌的构建
  4. 什么?分布式事务现在不是都在用么?你还不会?
  5. ZeroC ICE java异步实现方式(ami/amd)
  6. (转)Go语言核心36讲之Go语言入门基础知识
  7. QT中写一个求QVector容器中数据均值的函数
  8. numpy.ma详解
  9. [云炬创业管理笔记]第6章制定创业行动测试3
  10. 关闭excel多余的addin,提供excel启动速度
  11. linux ubuntu bionic,尝试在Linux Ubuntu 18.04 Bionic上安装Docker CE时出现错误?
  12. 领域应用 | 深度学习在知识图谱构建中的应用
  13. Spark Streaming 遇到 kafka
  14. Python写出一个字节,一个YouTube,我用Python怎么了!
  15. SDUT_2012省赛选拔赛2 部分题目
  16. 线接触和面接触的区别_接触器是啥?跟继电器有啥区别,6大常见故障怎么处理...
  17. python爬虫-斗鱼弹幕(asyncore仅供学习参考用)
  18. HKC PG27P3Q 评测
  19. C语言骑士与金币问题
  20. 从零开始安装Gentoo

热门文章

  1. 专业放心的python入门视频_手把手教你掌握学习Python方法,让你不再从入门到放弃...
  2. MS5182N(AD7682)驱动开发调试总结(一)
  3. 用单片机控制PH8810和无线收发模块实现远程控制家电
  4. 带你了解热门IoT开源项目:home assistant
  5. 虚拟主机如何清空网站程序文件和mysql数据库数据
  6. 支付宝/钉钉小程序实现蓝牙打印
  7. 超级计算机在海洋信息系统中应用
  8. KU040 slice内 路径分布 和 延时参数
  9. JWT--使用/教程/实例
  10. 史上最细Maven一条龙服务(从0到飞起)