系列:版本控制基础
Git 冲突不是 Git 坏了,而是同一段内容被不同分支改了,Git 不敢替你决定。理解冲突标记后,处理流程其实固定。
冲突长什么样
<<<<<<< HEAD当前分支内容=======另一个分支内容>>>>>>> feature你要做的是把这段改成最终想要的内容,并删除标记。
merge 冲突
git merge feature/logingit status修改冲突文件后:
git add path/to/filegit commit如果不想继续:
git merge --abortrebase 冲突
rebase 会把当前分支的提交一个个重放到目标分支上,所以可能不是只冲突一次。每解决完一个提交,都要继续 rebase。
git rebase main解决后:
git add path/to/filegit rebase --continue放弃:
git rebase --abortcherry-pick 冲突
cherry-pick 是把某个提交单独拿过来。它的冲突处理和 rebase 很像,只是继续命令不一样。
git cherry-pick abc1234解决后:
git add path/to/filegit cherry-pick --continue常见问题
冲突时不要闭眼选择“全部保留当前”或“全部保留传入”。先看上下文,再跑测试。
冲突太多通常说明分支太久没合并。分支管理可以看 Git 分支管理指南:main、dev、feature、release 怎么用。
总结
冲突处理只有三步:看 git status,编辑文件删除冲突标记,add 后继续当前操作。救急命令可以看 Git 进阶:你迟早要会的几个救急命令。