处理 git 合并冲突
我一直是在终端下使用 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 diff3
将conflictstyle
设成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 合并冲突相关推荐
- IDEA中Git合并冲突
1.美图 2.背景 IDEA中Git合并冲突 先commit本地修改的文件到本地repository pull源码,因为存在代码冲突,所以接下来会自动弹出merge融合窗口,如下图:
- VS Code 1.69 发布:允许快速解决 Git 合并冲突
Visual Studio Code 1.69 现已发布,一些主要亮点更新包括: 3-way merge editor- 在 VS Code 内解决合并冲突. 合并编辑器允许你快速解决 Git 合并冲 ...
- git合并冲突解决方法
git合并冲突解决方法 1.git merge冲突了,根据提示找到冲突的文件,解决冲突 如果文件有冲突,那么会有类似的标记 2.修改完之后,执行git add 冲突文件名 3.git commit 注 ...
- git 合并冲突_git分支管理的策略和冲突问题
备注: 知识点 关于分支中的冲突 分支管理的策略 分支策略 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文. 知识点 git log --g ...
- git合并冲突【you have not concluded your merge】
a分支merge b分支,出现合并冲突,解决冲突后再次merge报错"you have not concluded your merge", 解决办法:先解决冲突,然后提交合并,然 ...
- 详解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 ...
- Git合并冲突的根本原因和解决方法
假如您现在正在参与一个团队项目,并取得了实质性的进展.然而,当你准备提交代码的时候,发现团队中的某个人也更改了同一个文件,并且先你一步提交了--您现在遇到了代码冲突问题.而且需要花时间去解决自己的更改 ...
- git 合并冲突解决方法
项目场景: 例如:在github上修改代码后在本地进行拉取的时候报错合并冲突 问题描述 合并冲突 常见冲突的生产场景如下 更新代码 提交代码 多个分支代码合并到一个分支时 多个分支向同一个远端分支推送 ...
- git 合并冲突_GIT提交记录和Revert commit过程分析
一.根据GIT提交记录查看提交过程 先做个git分支的背景介绍 图1 步骤说明 1⃣️ 项目A 默认分支是 master 2⃣️ 基于master分支创建 f1.f2.test分支 3⃣️ f1 发起 ...
最新文章
- C#强化系列文章四:匿名方法的使用
- flex 嵌套 之 高度自适应
- laravel上传文件报错:413 Request Entity Too Large
- 课程及其编码字典python_【课程15】Python字典
- 【拔刀吧少年】之shell编程规范与变量
- [20150611]优化sql遇到问题.txt
- 适用于高级Java开发人员的十大书籍
- php数据库postgresql,PHP 操作 PostgreSQL数据库
- JAVASCRIPT 等比例缩放图片 限定最大宽度和最大高度
- 请问客户端PC应该如何限制其自动获取IP地址?
- ES6 class 技术点拾遗
- 网易云音乐API 分析
- Java Swing Mysql学生签到考勤系统
- Insyde uefi 隐藏设置_Android/iOS QQ 8.1.5测试版同时发布:私密会话可以隐藏
- 劝酒情形要承担法律责任
- 小程序推送代码到远程库
- ANDROID下获取IMSI及IMEI码
- linux中无法联网小电脑图标不见,电脑桌面上的网络连接图标突然不见怎么解决?...
- SQL Server求解最近多少销售记录的销售额占比总销售额的指定比例
- 51 Nod1113 矩阵快速幂
热门文章
- 昔日“宅男最爱”、视频播放器之王破产清算:4.5万元商标拍到950万元
- 淘宝直播上线“湖北加油”专区:近7000湖北商家获得扶持
- 卢伟冰曝Redmi K30 Pro搭载骁龙865,却惨遭交罚款
- 离上市又近一步!华为P40系列在工信部入网......
- 雷军的手机屏保亮了,网友哭笑不得:我还以为是董明珠呢!
- 马化腾说话都不好使了?腾讯上线匿名社交APP,升级版漂流瓶?
- 荣耀9X Pro外观设计图曝光:升降前置摄像头/保留3.5mm耳机孔
- 可穿戴的手机!努比亚nubia-α国行版将于4月8日正式发布
- 女儿是程序员爸爸的小棉袄,礼物太暖心
- deepin 使用cuda硬件解码