当前位置: 首页 > news >正文

使用IDEA工具处理git合并后的冲突的细节

使用 IDEA 处理合并(merge)

使用IDEA处理git合并如果遇到冲突,对冲突文件的不冲突部分需要处理吗?会自动将双方不冲突的部分合并吗?

比如如下,使用 IDEA 合并 branch1 到 branch2 分支,出现了冲突,如下图:
在这里插入图片描述

如果处理好冲突,得到如下图:
在这里插入图片描述

我的问题是,绿色的部分如果不更新到中间的Result里头,在点击 Apply 之后会不会丢失掉?答案是会丢失,没有冲突的部分也得你操作点一下!中间的Result就是合并后的样子!

我为什么会有这个疑问,因为我以前是习惯直接使用命令行 git merge 来合并的,合并之后搜索 <<< 来确定有冲突的位置(当然也可以查看执行 git merge 命令后会列出冲突的文件列表),以前用git merge命令都是会自动合并没有冲突的部分,所以我改成用 IDEA 的图形化工具之后有这样的疑问

下面是上述结论的实践证明
假设我们现在不将绿色无冲突的部分手工弄到中间的Result,继续点击Apply,则 IDEA 还是比较人性化给你弹出提示,告知你还有未处理完的合并
在这里插入图片描述
此时如果点击 Continue Merge 就相当于继续处理剩余的,如果点击 Apply Changes and Mark Resolved 就是继续(老子就要这么干)

点击 Apply Changes and Mark Resolved 后就可以看到最终的合并结果丢失了两边绿色的内容,如下图:
在这里插入图片描述

细节

细节1:diff算法局限性

注意到diff算法的一些局限性。本该是显示新增的,结果显示为修改。

受限于差异算法,红框里的部分其实应该识别为新增内容,但是算法无法这么智能地识别这是新方法,它以为只是第一个方法即 getProfiles() 的延伸!!你可以看到红框里最后一个 } 被认为和原getProfiles() 方法的 } 相同,如下图:
在这里插入图片描述

细节2:从哪里可以看到什么分支合并到什么分支

在处理冲突的页面可以看到
在这里插入图片描述
另外还可以从下图看出(如果有冲突,最左边的就是 “合并到” 的分支)
在这里插入图片描述
有时候也非常奇葩,不显示分支名,显示的revision,不知道为什么。比如如下图是合并branch2到branch1,结果branch2被现实成revision,可读性变差了!!
在这里插入图片描述

细节3:“a合并到b” 和 “b合并到a” 就是显示的结果反过来而已

在这里插入图片描述

细节4:保留左边还是右边?

合并的时候自然可以选择保留两边任意一边的,也可以两边都保留,也可以两边都不采纳。中间的Result栏你要怎么改就怎么改,反正你在Result看到的就是最终的合并后的结果

如下图,可以不采纳左右两边的,最终结果使用一个新的变量名
在这里插入图片描述

细节5:处理完冲突之后,有没有一键左右两边的都合并到中间?

处理完某个文件中的冲突部分后,有时候左右两边的 >> 和 << 太多了,一个个点完了左边的>>还要一个点右边的<< 太费劲了,有没有快速的一次性将左边的>>全部采纳,和一次性右边的<<全部采纳,又或者一次性将左右两边的全采纳?

其实是有的

  • 点击 “>> Left” 这个则把左边无冲突的、所有的change应用过去(这样就不需要逐个点击,同时有冲突的不会一起过去)
  • 点击 “>> Right” 这个同理把右边无冲突的、所有的change应用过去
  • 点击 “>><< All” 则相当于点击了上面的两个按钮,同样的,会把无冲突的、全部的左右的change应用

在这里插入图片描述

注意
1、建议还是一个个点击会比较放心,除非你真的很自信你的操作没有问题。
2、上面的操作可以通过ctrl+z或cmd+z撤销

细节6:IDEA 右下角的分支终于会自动刷新了

实测Mac版本的 IDEA Ultimate Edtion 2023.1.3,在Terminal中切换分支,右下角显示的分支终于会实时刷新了(之前在Terminal中使用git checkout myBranch 之后并不会实时变化,要等鼠标点击到别的地方的时候才会刷新)
在这里插入图片描述

http://www.lryc.cn/news/226933.html

相关文章:

  • 快速下载ChatGLM系列模型
  • 【数据结构】顺序表 | 详细讲解
  • 100天精通风控建模(原理+Python实现)——第1天:什么是风控建模?
  • HTML转义字符
  • 【STM32】
  • U盘不可以访问的维护
  • SpringCloud 微服务全栈体系(十三)
  • ROC 曲线详解
  • 113.路径总和II
  • 【Linux】WSL安装Kali及基本操作
  • Linux基础开发工具之调试器gdb
  • Apache APISIX 的 Admin API 默认访问令牌漏洞(CVE-2020-13945)漏洞复现
  • Clickhouse学习笔记(3)—— Clickhouse表引擎
  • WebSocket是什么以及其与HTTP的区别
  • Flutter 实战:构建跨平台应用
  • Python中68个内置函数的使用与归类
  • AGV無人搬送車控制系统Pytorn
  • 使用MVS-GaN HEMT紧凑模型促进基于GaN的射频和高电压电路设计
  • Android13分享热点设置安全性为wpa3
  • 2023-11-12 LeetCode每日一题(Range 模块)
  • 【六袆 - Framework】Angular-framework;前端框架Angular发展的由来0001;
  • JAVA集合学习
  • 【Linux】语言层面缓冲区的刷新问题以及简易模拟实现
  • Mac安装与配置eclipse
  • TCP协议(建议收藏)
  • Interactive Analysis of CNN Robustness
  • Java,多线程,线程的通信机制
  • ArcGIS进阶:栅格计算器里的Con函数使用方法
  • 小程序多文件上传 Tdesign
  • Java多线程锁