Git合并冲突是提示而非错误,需手动处理冲突标记、选择保留或融合代码并删除标记,再执行git add和git commit完成合并;若出错可用git merge --abort安全退出。
mac 上 git 合并代码报冲突,不是出错,而是 git 在提醒你:两个分支改了同一处,它没法替你做决定。只要理清逻辑、按步骤操作,几分钟就能搞定。
看清冲突标记,别慌着删文件
打开报冲突的文件(比如 app.js),你会看到类似这样的结构:
<<<<<< HEAD
const version = "v2.0";
=======
const version = "v1.5";
>>>>>> feature/new-version
这三行标记本身不是代码,只是 Git 给你的“选择题提示”:
• <<<<<< HEAD 到 ======= 之间,是你当前所在分支(比如 main)的内容;
• ======= 到 >>>>>> 之间,是你要合并进来的分支(比如 feature/new-version)的内容。
你需要手动保留其中一段,或融合成新内容,然后把这三行标记全部删干净——少删一行都可能编译失败。
快速解决的三种实用方式
根据场景选最顺手的一种:
- 纯手动编辑:适合单个文件、改动简单。删标记 → 留下想要的代码 → 保存文件
-
一键保留某一方:想完全用当前分支就运行
git checkout --ours app.js;想全用对方分支就运行git checkout --theirs app.js,再执行git add app.js -
用可视化工具辅助:在终端输入
git mergetool,会自动调起 VS Code 或 Fork 等图形界面,左右对比 BASE/LOCAL/REMOTE 三版差异,点选或拖拽就能合并,特别适合多处改动或逻辑关联强的文件
解决完必须做的两件事
很多人卡在这一步,导致后续提交失败或代码异常:
-
逐个
git add已处理的文件:运行git status查看哪些还在 “Unmerged paths” 状态,对每个文件执行git add 文件名;也可以用git add .全部暂存(确保没漏掉) -
必须
git commit完成合并:不要跳过这步!Git 会自动生成一条合并提交记录,这是整个流程的终点。不提交,分支状态仍是“正在合并中”,也无法推送
万一搞砸了,能安全退出
如果改乱了、不确定怎么选,或者发现合并方向错了:
- 确认还没运行
git add或git commit - 直接执行
git merge --abort - 工作区和暂存区会立刻回到合并前的状态,就像什么都没发生过


















