如何解决 Git 合并冲突(merge conflict)

解决合并冲突四步:git status 看冲突文件 → 打开文件编辑冲突标记(<<<<<<< 当前分支 / ======= / >>>>>>> 对方分支)→ git add 标记已解决 → git commit 完成合并。工具辅助:git mergetool 或 IDE 内置合并工具。

最佳实践
Git 分支协作与合并示意

冲突的本质:同一处代码两边都改了,Git 不知道选哪个,把决定权交给你。 流程:打开冲突文件 → 找到 <<<<<<<、=======、>>>>>>> 标记 → 编辑成想要的样子 → git add → git commit。

认识冲突标记

<<<<<<< HEAD
当前分支的内容
=======
对方分支(被合入)的内容
>>>>>>> feature-x

你要做的是把整段(含标记行)替换成最终想要的内容——可以二选一、两者融合、或重写。

标准流程

git merge feature-x
# CONFLICT (content): Merge conflict in src/app.js

git status                    # 看有哪些冲突文件(both modified)
vim src/app.js                # 编辑,删掉标记,保留正确内容
git add src/app.js            # 标记为已解决
git commit                    # 完成合并提交(信息已预填)

工具辅助

  • VS Code:冲突处直接显示 "Accept Current / Incoming / Both" 按钮;
  • git mergetool:调起配置的合并工具(vimdiff、meld 等);
  • 整文件站队:git checkout --ours 文件 全用我方版本,--theirs 全用对方。

不想合了

git merge --abort     # 回到合并前,当无事发生

常见问题(FAQ)

Q:为什么同一个文件反复冲突?

两个分支长期并行大改同一文件。治本:勤同步(定期 merge/rebase main)、大文件拆分、格式化类改动单独成批做。

Q:rebase 冲突和 merge 冲突解决方式一样吗?

编辑方式相同,流程略不同:解决后 git add 然后 git rebase --continue(不是 commit),而且可能需要解决多轮。

Q:解决完如何确认没解错?

git diff origin/main...HEAD 复查改动面;跑测试。合并提交本身可以 git show HEAD 检查。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台