git merge --edit,使用alias设定merge为merge --edit。
git无法强制限制本地的修改,merge是个本地的操作。
这个属于git的merge算法的问题。
显然git是不理解代码逻辑的。所以只能简单的基于改动行的位置去判断如何merge。这种办法在大多数情况下是工作的。
除了你说的这种情况,还有很多可能导致合并引入新问题。比如你的同事给抽象类加了一个新方法,同时你新写了一个该抽象类的继承类。如果只是做merge,必定引入编译问题。
现在的技术应该是做不到自动解决的,所以只能是我们做合并完了后,再review一下。分析别人的改动和自己的改动是否会相互影响,手动解决代码逻辑上的问题。