SourceTree 解冲突 bug

SourceTree 在解冲突时,如果使用 “使用他人版本解决冲突”,不是指冲突部分使用他人版本,而是将整个文件“使用他人版本替换”,这个就恶心了。

举例

原文件:

var a = 0;
var b = 0;
var c = 0; // CoderA changed

CoderA 修改版本:

var a = 1; // CoderA changed
var b = 0;
var c = 1; // CoderA changed

CoderB 修改版本:

var a = 0;
var b = 0;
var c = 2; // CoderB changed

合并时会出现,第三行冲突:

var a = 1; // CoderA changed
var b = 0;
<<<<<<< CoderA version
var c = 1; // CoderA changed
=======
var c = 2; // CoderB changed
>>>>>>> CoderB version

如果此时使用 SourceTree 的“使用他人版本解决冲突”功能,结果如下:

var a = 0;
var b = 0;
var c = 2; // CoderB changed

整个文件完全等同于 CoderB 的版本,这个显然是不对的,我们希望只有冲突那行变为 CoderB 的版本,应该如下:

var a = 1; // CoderA changed
var b = 0;
var c = 2; // CoderB changed

这才是正确的。

总结

SourceTree 解冲突有坑,“使用XX版本解决冲突”功能慎用,还是要手动解!

版本

SourceTree 版本:2.7.6(177)
内置 Git 版本:2.17.1