文章列表
2 分钟阅读

Git 冲突解决指南:merge、rebase、cherry-pick 冲突怎么处理


系列:版本控制基础

第 7 / 8 篇

  1. Git 安装与使用教程:Linux 和 Windows 从零开始版本管理
  2. Git 进阶:你迟早要会的几个救急命令
  3. Git 分支管理指南:main、dev、feature、release 怎么用
  4. Git Commit 规范:怎么写清楚提交信息
  5. GitHub Pull Request 工作流入门
  6. GitHub Actions 入门:为博客加自动检查
  7. Git 冲突解决指南:merge、rebase、cherry-pick 冲突怎么处理
  8. GitHub Actions 自动部署实战:从检查到发布的完整流程

Git 冲突不是 Git 坏了,而是同一段内容被不同分支改了,Git 不敢替你决定。理解冲突标记后,处理流程其实固定。

冲突长什么样

<<<<<<< HEAD
当前分支内容
=======
另一个分支内容
>>>>>>> feature

你要做的是把这段改成最终想要的内容,并删除标记。

merge 冲突

Terminal window
git merge feature/login
git status

修改冲突文件后:

Terminal window
git add path/to/file
git commit

如果不想继续:

Terminal window
git merge --abort

rebase 冲突

rebase 会把当前分支的提交一个个重放到目标分支上,所以可能不是只冲突一次。每解决完一个提交,都要继续 rebase。

Terminal window
git rebase main

解决后:

Terminal window
git add path/to/file
git rebase --continue

放弃:

Terminal window
git rebase --abort

cherry-pick 冲突

cherry-pick 是把某个提交单独拿过来。它的冲突处理和 rebase 很像,只是继续命令不一样。

Terminal window
git cherry-pick abc1234

解决后:

Terminal window
git add path/to/file
git cherry-pick --continue

常见问题

冲突时不要闭眼选择“全部保留当前”或“全部保留传入”。先看上下文,再跑测试。

冲突太多通常说明分支太久没合并。分支管理可以看 Git 分支管理指南:main、dev、feature、release 怎么用

总结

冲突处理只有三步:看 git status,编辑文件删除冲突标记,add 后继续当前操作。救急命令可以看 Git 进阶:你迟早要会的几个救急命令