Git 合并分支时出现 conflict 报错如何快速解决?

文章导读
遇到 Git 合并冲突不要慌,最稳妥的做法是先暂停合并流程,确认冲突文件内容后再手动修改,最后提交修复。
📋 目录
  1. 命令速用版
  2. 冲突长什么样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常用合并工具推荐
  6. 常见坑
  7. 参考来源
A A

遇到 Git 合并冲突不要慌,最稳妥的做法是先暂停合并流程,确认冲突文件内容后再手动修改,最后提交修复。

先说结论:冲突是 Git 保护代码不被覆盖的机制,手动编辑冲突标记是唯一可靠的解决方式,不要强行覆盖。

  • 先确认:使用 git status 查看具体冲突文件列表
  • 先处理:打开文件删除冲突标记,保留正确代码
  • 再验证:执行 git add 和 git commit 完成合并

命令速用版

# 查看冲突状态
git status

# 放弃本次合并(如果搞砸了)
git merge `--abort`

# 标记冲突已解决
git add <文件名>

# 完成合并提交
git commit

冲突长什么样

Git 会在冲突文件中插入特定标记,示例如下:

<<<<<<< HEAD
console.log('当前分支代码');
=======
console.log('合并分支代码');
>>>>>>> feature-branch

其中 <<<<<<< HEAD 下方是当前分支内容,>>>>>>> 上方是待合并分支内容,======= 是分隔线。

分步处理

第一步:定位冲突文件
执行 git status,输出中会列出 "both modified" 状态的文件,这些就是需要处理的文件。

第二步:编辑文件内容
使用编辑器打开冲突文件,找到冲突标记。根据业务逻辑决定保留哪一部分代码,或者将两部分代码融合。完成后,务必删除所有冲突标记符号。

Git 合并分支时出现 conflict 报错如何快速解决?

第三步:标记解决并提交
修改保存后,执行 git add <文件名> 告诉 Git 冲突已解决。所有冲突文件处理完毕后,执行 git commit 完成合并。

怎么验证是否生效

执行 git status,成功解决后的输出应类似:

On branch main
nothing to commit, working tree clean

若显示干净状态,说明冲突已清除。接着可以执行 git log `--oneline` `--graph` 查看提交历史,确认合并提交已生成。

常用合并工具推荐

除了手动编辑,也可以使用图形化工具辅助解决:

  • VS Code:内置 Git 支持,冲突处会显示 "Current Change" 和 "Incoming Change",点击 Accept 即可。
  • Meld / KDiff3:专业的三方合并工具,可直观对比差异。
  • IDEA:右键冲突文件选择 "Resolve Conflicts",提供合并按钮。

常见坑

1. 直接提交冲突标记:千万不要在保留冲突标记的情况下强行 add 和 commit,这会导致代码语法错误。
2. 忽略二进制文件:图片、编译产物等二进制文件冲突无法通过文本编辑解决,通常需要决定保留其中一个版本,使用 git checkout `--ours`git checkout `--theirs` 选择。
3. 误用 abortgit merge `--abort` 会彻底取消本次合并操作,恢复到合并前的状态。如果已经修改了一部分冲突,执行 abort 后这些修改会丢失,需谨慎使用。

参考来源

  • Git 官方文档 - Git Merge: https://git-scm.com/docs/git-merge
  • Pro Git 中文版 - 分支的合并:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E5%90%88%E5%B9%B6