Git入门:如何合并两个分支中的README.md文件
解决Git合并冲突与mergetool内容粘连问题
冲突本质
你遇到的冲突是因为两个分支对README.md的同一区域(邮箱信息)做了互斥修改:第一个分支保留了邮箱,第二个分支删除了它,Git无法自动判断最终保留哪版内容,所以触发了手动冲突解决流程。
解决mergetool内容粘连问题
这种“修改一方同步改变另一方”的情况,大多是你当前用的mergetool开启了联动编辑模式(比如部分IDE的同步视图),或者工具本身的窗口关联逻辑导致的。最快的解决办法是换用无联动的基础合并工具:
- 执行
git config --global merge.tool vimdiff,将默认合并工具改为vimdiff(终端原生工具,无联动) - 重新执行
git mergetool,会打开三个独立窗口:本地分支内容、公共基础版本、待合并的远程分支内容,你可以单独编辑中间的合并结果窗口,保存后退出即可完成合并。
新手友好的手动解决冲突方法(无需依赖工具)
如果觉得mergetool复杂,直接手动编辑冲突文件更直观:
- 合并失败后,直接打开README.md,你会看到Git自动插入的冲突标记:
<<<<<<< HEAD (这里是当前第三个分支的内容,包含邮箱信息) ======= (这里是第二个分支的内容,已删除邮箱) >>>>>>> 你的第二个分支名称 - 保留你需要的内容:
- 要保留“删除邮箱”的结果:删掉
<<<<<<< HEAD到=======之间的所有内容,再删除所有冲突标记 - 要保留邮箱:删掉
=======到>>>>>>>之间的所有内容,再删除所有冲突标记
- 要保留“删除邮箱”的结果:删掉
- 编辑完成后,执行
git add README.md,然后git commit完成合并。
额外提示
新手阶段优先用手动编辑的方式处理冲突,能帮你更清晰理解Git冲突的本质。等熟悉Git的合并逻辑后,再尝试配置适合自己的mergetool。
内容的提问来源于stack exchange,提问作者unwrittenbook
相关产品推荐
相关产品推荐

