Git怎么解决合并冲突_Git merge冲突解决步骤教程【实战】

老伟姑娘_8769

老伟姑娘_8769

2026-04-05

570人浏览

原创

看到 conflict (content) 应立即停止操作,先用 git status 定位冲突文件,手动清除冲突标记()并保留最终代码,再逐个 git add ,最后 git commit 完成合并。

git怎么解决合并冲突_git merge冲突解决步骤教程【实战】

看到 CONFLICT (content) 就该停手,别急着 git add .

Git 检测到同一文件的同一段落被两个分支各自修改,就会中止合并并报出 CONFLICT (content): Merge conflict in <filename></filename>。这不是错误,而是 Git 在说:“这段我没法替你决定,得你来拍板”。此时工作区已处于“未完成合并”状态,git status 会显示 both modified 的文件,且这些文件里塞满了冲突标记。

  • 别一上来就 git add . —— 这会把带冲突标记的“半成品”一起暂存,后续提交反而更难回退
  • 先用 git status 锁定具体哪些文件冲突,只打开它们,其他文件不用碰
  • 冲突标记长这样:(当前分支内容)、<code>=======(分隔线)、>>>>>> branch-a(待合并分支内容)—— 三者必须**全部手动删掉**,只留下你确认保留或整合后的最终代码
  • 改完一个文件后,立刻 git add <filename></filename>,Git 才会把它从“未解决”列表里划掉

用 git mergetool 比纯手改快得多,但得先配好工具

图形化合并工具(比如 meld、bcompare、VS Code 内置的合并视图)能直观对比三方:BASE(共同祖先)、LOCAL(当前分支)、REMOTE(待合入分支),避免看花眼漏删标记。但它不会自动启动,得自己配。

  • 配一次就能长期用:git config --global merge.tool meld(换成 vscode 或 bcompare 也行)
  • 启动命令就是 git mergetool,它会逐个打开冲突文件,选好再保存退出即可
  • 注意:如果没配 merge.tool 直接运行 git mergetool,Git 会弹一堆提示问你用哪个工具,容易卡住
  • VS Code 用户可跳过配置,直接在冲突文件里点右上角“接受当前更改/接受传入更改/接受两者”,但记得最后仍要 git add 手动标记解决

git merge --abort 是安全网,但只在合并中途有效

改了一半发现理不清逻辑?或者误删了不该删的代码?别硬撑,git merge --abort 能退回合并前的状态——前提是还没执行 git commit。

Digital Labour
Digital Labour

24个商业自动化AI助手,覆盖销售拓展、获客、内容创作、SEO、广告文案、记账、提案、市场调研及商业计划等

下载
  • 一旦你已经 git commit 了冲突解决结果,--abort 就失效了,只能靠 git reset --hard ORIG_HEAD(如果没覆盖过)或翻日志找前一个 commit
  • 执行 git merge --abort 后,所有未 add 的修改都会恢复原样,已 add 的冲突文件也会还原成合并前内容
  • 警告:如果合并开始前本地就有未提交改动,--abort 可能无法完全复原——所以养成“合并前先 git status 确认干净”的习惯

解决完别忘 git commit,否则合并没真正完成

很多人以为删完冲突标记、git add 完就结束了,其实 Git 还等着你敲下最后一句 git commit。此时不写 -m 参数,Git 会自动弹出编辑器让你填提交信息——这是强制提醒你:这不是普通提交,是合并提交。

  • 提交信息建议写清楚来源,比如:git commit -m "Merge branch 'feature/login' into develop, resolve conflict in auth.js"
  • 如果用了 --no-commit 启动合并(例如想检查后再提交),那 git commit 就是必选项,跳过它等于没合并
  • 推送前务必 git status 确认输出是 “nothing to commit, working tree clean”——只要还剩一个 unmerged paths,远程仓库就拒绝你的 push

真正麻烦的不是冲突本身,而是改完没测试、提交没推、或者多人同时解决同一处却没同步方案。留个心眼:改完冲突,哪怕只是加个 console.log,也顺手跑一下相关功能。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

git git冲突解决

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

5567

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2408

6

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4216

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1315

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1698

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9763

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

940

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2584

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1529

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习