Skip to content

合并冲突

快速摘要

两个分支都改了同一行代码,Git 不知道该保留哪个版本,于是停下来让你手动决定。

为什么发生

  • 两个分支都修改了同一个文件的同一区域

  • 一个分支删除了某文件,另一个分支修改了它

  • rebase 或 cherry-pick 时与当前提交有冲突

最小示例

✗ 错误代码
<<<<<<< HEAD
const title = "新标题";
=======
const title = "旧标题";
>>>>>>> feature-branch
✓ 修复代码
const title = "新标题";

HEAD(当前分支)改成“新标题”,feature-branch 还是“旧标题”,Git 无法自动合并。手动保留想要的版本并删除标记即可。

如何诊断

  • 运行 git status 查看哪些文件处于冲突状态(both modified)

  • 打开冲突文件,搜索 <<<<<<<=======>>>>>>> 标记

  • 理解两个分支各自的修改意图,决定保留哪个或如何合并

如何修复

  • 手动编辑冲突文件,删除标记并保留正确的代码

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

  • git merge --continuegit rebase --continue 完成操作

  • 如果想放弃合并,运行 git merge --abort 回到合并前状态

如何预防

  • 团队约定频繁合并主分支到特性分支,减少冲突积累

  • 拆分大改动为小提交,冲突更易定位

  • 约定模块边界,减少多人改同一文件的概率

相关资源

相关术语

相关课程

相关练习

← 返回语言