今天遇到一个奇怪的问题:
1、后端从master拉了三个分支。分别为dev、test、和stage。
2、研发1从dev拉了分支feature1,然后commit、commit、commit......。最后request merge到dev、test和stage。成功了。
3、研发2从dev拉了分支feature2,注意,feature2和feature1是同时拉的分支。分别开发不同的任务,然后研发2也开始commit,commit,commit。本来毫无交际,但有一天研发2必须要用到和研发1用到的同一个文件,但是研发1已经修改并提前merge了。这时候研发2提交merge,报了冲突。
4、接下来研发2要解决冲突。他拉取了dev更新的代码,里面自然包含研发1提交的东西。然后找到那个文件进行比较,然后删除掉自己的东西,加入研发1的东西,然后提交。显示冲突解决,可以merge。然后研发2 merge到了dev。
5、接下来,魔性的来了,研发2紧接着又修改了那个文件。把自己删掉的那几行代码加了进去,然后commit,接着又merge到了dev,显示成功。接着又分别merge到test和stage。竟然成功了。why?他们中间有什么猫腻?很奇怪。test和stage比着dev其实少了一次merge,但是结果却是相同的。