Git 合并冲突
一句话:两个人(或两个分支)修改了同一个文件的同一处内容,Git不知道该保留哪个版本,需要人工决定。
它是什么
Git合并冲突是团队协作里的常态,不是错误也不用慌:本质是Git发现两处改动"打架"了,它会在文件里用特殊标记(<<<<<<< ======= >>>>>>>)标出两个版本,需要你手动决定保留哪部分或者两者结合。
适合干什么
- 多人协作开发时合并分支/拉取更新遇到冲突
- 长期未同步的分支合并回主分支
不适合干什么
- package-lock.json这类不建议手动解决的自动生成文件冲突(那类直接删除重新生成更稳妥)
普通人怎么用
打开冲突文件,找到 <<<<<<< 到 >>>>>>> 之间的部分,看清楚哪部分是自己的改动(通常在HEAD下面)、哪部分是别人的(通常在=======下面),决定保留哪个或者手动合并两者的内容,然后删除这些特殊标记符号。
进阶用户怎么用
用带图形界面的Git工具(VS Code自带的Git冲突解决界面很直观)能显著降低手动处理的出错率;养成小步提交、频繁同步主分支的习惯,能大幅减少大范围冲突的发生。
常见误区
- 以为遇到冲突说明操作错了,实际这是协作开发的正常现象,处理好就行
- 解决冲突时忘记删除Git加的特殊标记符号(<<<<<<<等),导致代码里混入了这些无意义的字符
和相似工具的区别
- 和 package-lock-conflict 处理方式不同:普通代码冲突需要理解两边改动的意图手动合并,lock文件冲突建议直接删除重新生成
入门步骤
- 用 git status 查看哪些文件有冲突
- 逐个打开冲突文件,理解两边改动的意图
- 手动决定保留内容,删除冲突标记后重新提交