三路合并能做而两路合并不能做的事
记录一个只有三路合并能够搞定而两路合并不能搞定的情形。一个文件两人同时改,第一个删除了第一行,第二个人则删除了最后一行。用两路合并能么会显示第一个人的版本比第二个人的版本少了第一行而多了最后一行。用vimdiff看得话差不多是这个样子:
?
对于这种情形如果不参考这两个人修改的起点,那么会有很多种可能的合并结果。但如果有了修改之前的文件作参考,也就是用三路合并,那么马上就可以知道第一个人要删除第一行,而第二个人要删除最后一行,这样合并的结果就是首末两行都去掉。用p4merge看得话大概是这个样子:
?
顺带说说p4merge是Perforce的免费三路合并工具,功能和界面都挺不错的,码农必备。