我一直是在终端下使用 git 的。如果合并分支或者执行 rebase 遇到冲突,处理起来比较麻烦。今天 rebase 开发分支的时候又遇到了一堆冲突,于是就花了点时间研究如何快速处理 git 冲突。方法很简单,就是将 conflictstyle 配置改成 diff3。下面为大家细细分解。

git 的默认 conflictstyle 是 merge,遇到冲突后(在演示项目执行 git merge feature_branch)会显示如下标记:

<<<<<<< HEAD
Alice asked her parents if she could
borrow their car. They said ok but told
=======
Alice asked her father if she could
borrow his motorbike. He said ok but told
>>>>>>> feature_branch
her she had to be back by 11pm.

这其中<<<<<<< HEAD=======之间的部分表示当前所在分支(也就是HEAD)的内容,而=======>>>>>>> feature_branch之间的部分则是 feature_branch 分支的内容。看到这个冲突就头大,因为我们无法确定要留哪一行删哪一行。

如果我们执行git config --global merge.conflictstyle diff3conflictstyle设成diff3,则结果会变成

<<<<<<< HEAD
Alice asked her parents if she could
borrow their car. They said ok but told
||||||| merged common ancestors
Alice asked her father if she could
borrow his car. He said ok but told
=======
Alice asked her father if she could
borrow his motorbike. He said ok but told
>>>>>>> feature_branch
her she had to be back by 11pm.

大家注意多出来的||||||| merged common ancestors=======之间的部分。git 在合并分支的时候用的是三路合并(3-way merge)。三路合并的关键就是找到两个分支的最新公共提交版本。在这个例子中,公共提交版本的内容就保存到了||||||| merged common ancestors=======之间。

很显然,master 分支将Alice asked her father if she could改成了Alice asked her parents if she could,也就是 Alice 现在要向她的父母借车;而 feature_branch 分支则将 borrow his car...改成了borrow his motorbike...,也就是不借车了,要借摩托。两者合并,最终结果应该是:

Alice asked her parents if she could
borrow their motorbike. They said ok but told
her she had to be back by 11pm.

例子。

cauliflower
<<<<<<< HEAD
peas
potatoes
=======
>>>>>>> topic
tomatoes

单看这种merge风格的冲突会很困惑,为什么 peas 会和空行冲突呢?如果开启了三路冲突展示,你会看到

cauliflower
<<<<<<< HEAD
peas
potatoes
||||||| merged common ancestors
peas
=======
>>>>>>> topic
tomatoes

这下就明了了,原来是 topic 分支删掉了 peas 一行,而当前分支又在 peas 下加了 potatoes 一行。所以正确的处理结果应该是只保留 potatoes。如果不开启 diff3选项,我们是很难正确处理这类冲突的。

有帮到你的点赞、收藏一下吧

需要更多教程,微信扫码即可

处理 git 合并冲突相关推荐

  1. IDEA中Git合并冲突

    1.美图 2.背景 IDEA中Git合并冲突 先commit本地修改的文件到本地repository pull源码,因为存在代码冲突,所以接下来会自动弹出merge融合窗口,如下图:

  2. VS Code 1.69 发布:允许快速解决 Git 合并冲突

    Visual Studio Code 1.69 现已发布,一些主要亮点更新包括: 3-way merge editor- 在 VS Code 内解决合并冲突. 合并编辑器允许你快速解决 Git 合并冲 ...

  3. git合并冲突解决方法

    git合并冲突解决方法 1.git merge冲突了,根据提示找到冲突的文件,解决冲突 如果文件有冲突,那么会有类似的标记 2.修改完之后,执行git add 冲突文件名 3.git commit 注 ...

  4. git 合并冲突_git分支管理的策略和冲突问题

    备注: 知识点 关于分支中的冲突 分支管理的策略 分支策略 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文. 知识点 git log --g ...

  5. git合并冲突【you have not concluded your merge】

    a分支merge b分支,出现合并冲突,解决冲突后再次merge报错"you have not concluded your merge", 解决办法:先解决冲突,然后提交合并,然 ...

  6. 详解Git合并冲突——原因及解决 “Automatic merge failed; fix conflicts and then commit the result.“

    最后更新日期:2022/10/6 在Git中使用git merge命令合并两个分支的时候,有可能产生这种情况: $ git merge A Auto-merging merge.txt CONFLIC ...

  7. Git合并冲突的根本原因和解决方法

    假如您现在正在参与一个团队项目,并取得了实质性的进展.然而,当你准备提交代码的时候,发现团队中的某个人也更改了同一个文件,并且先你一步提交了--您现在遇到了代码冲突问题.而且需要花时间去解决自己的更改 ...

  8. git 合并冲突解决方法

    项目场景: 例如:在github上修改代码后在本地进行拉取的时候报错合并冲突 问题描述 合并冲突 常见冲突的生产场景如下 更新代码 提交代码 多个分支代码合并到一个分支时 多个分支向同一个远端分支推送 ...

  9. git 合并冲突_GIT提交记录和Revert commit过程分析

    一.根据GIT提交记录查看提交过程 先做个git分支的背景介绍 图1 步骤说明 1⃣️ 项目A 默认分支是 master 2⃣️ 基于master分支创建 f1.f2.test分支 3⃣️ f1 发起 ...

最新文章

  1. C#强化系列文章四:匿名方法的使用
  2. flex 嵌套 之 高度自适应
  3. laravel上传文件报错:413 Request Entity Too Large
  4. 课程及其编码字典python_【课程15】Python字典
  5. 【拔刀吧少年】之shell编程规范与变量
  6. [20150611]优化sql遇到问题.txt
  7. 适用于高级Java开发人员的十大书籍
  8. php数据库postgresql,PHP 操作 PostgreSQL数据库
  9. JAVASCRIPT 等比例缩放图片 限定最大宽度和最大高度
  10. 请问客户端PC应该如何限制其自动获取IP地址?
  11. ES6 class 技术点拾遗
  12. 网易云音乐API 分析
  13. Java Swing Mysql学生签到考勤系统
  14. Insyde uefi 隐藏设置_Android/iOS QQ 8.1.5测试版同时发布:私密会话可以隐藏
  15. 劝酒情形要承担法律责任
  16. 小程序推送代码到远程库
  17. ANDROID下获取IMSI及IMEI码
  18. linux中无法联网小电脑图标不见,电脑桌面上的网络连接图标突然不见怎么解决?...
  19. SQL Server求解最近多少销售记录的销售额占比总销售额的指定比例
  20. 51 Nod1113 矩阵快速幂

热门文章

  1. 昔日“宅男最爱”、视频播放器之王破产清算:4.5万元商标拍到950万元
  2. 淘宝直播上线“湖北加油”专区:近7000湖北商家获得扶持
  3. 卢伟冰曝Redmi K30 Pro搭载骁龙865,却惨遭交罚款
  4. 离上市又近一步!华为P40系列在工信部入网......
  5. 雷军的手机屏保亮了,网友哭笑不得:我还以为是董明珠呢!
  6. 马化腾说话都不好使了?腾讯上线匿名社交APP,升级版漂流瓶?
  7. 荣耀9X Pro外观设计图曝光:升降前置摄像头/保留3.5mm耳机孔
  8. 可穿戴的手机!努比亚nubia-α国行版将于4月8日正式发布
  9. 女儿是程序员爸爸的小棉袄,礼物太暖心
  10. deepin 使用cuda硬件解码