版本控制

合并冲突(merge conflict)

合并冲突(merge conflict)发生在两个分支以不同的方式改动了文件里的同一行,而 Git 分不清你到底想要哪个版本的时候。它不会乱猜、冒着挑错的风险,而是停下来,把决定权交给你。这不是失败——而是 Git 诚实地承认:有些选择只有人才能做。

Git 会用三行你很快会认得的标记,把冲突直接标在文件里:<<<<<<< 开启你这一侧,======= 把两个版本分开,>>>>>>> 收尾对方那一侧。第一个标记到 ======= 之间是你这个分支的版本;======= 到最后一个标记之间,是对方的版本。

解决它是件需要静下心来的活:打开文件,想清楚最终这几行到底该写成什么——留你的、留对方的,或者把两者揉在一起——然后把那三行标记全部删掉,让剩下的内容读起来就是正常的代码。保存,把文件加入暂存(stage),再完成合并。那些标记必须消失干净;只要还剩一个,就说明你还没真正解决。

<<<<<<< HEAD
greeting = "Hello"
=======
greeting = "Hi there"
>>>>>>> fix-login

同一行的两个版本:======= 上面是你的,下面是对方的。挑一个,再把三行标记全删掉。

第一次遇到冲突会觉得吓人,到第十次就习以为常了。解决办法永远一样:把文件改对、删掉标记,搞定。

又称
conflictmerge conflict markersconflict markers