一、简介
在多人协作开发中,Git是一种常用的版本控制工具。使用Git时往往会伴随着各种分支的合并操作。
二、问题现状
例如A同学做了一个功能,他的代码需要提交到SIT分支(测试环境分支),以便把任务移交给负责测试的同学进行下一步的发版、测试、BUG报告生成等一系列的操作,那么分支合并便成为了开发工作中较为关键的一个步骤。在这个步骤中可能会出现的问题但不限于:1、自己的代码把别人的代码覆盖了,导致别人的功能校验不通过。2、自己的代码与目标分支的代码产生冲突,无法完成合并。3、别的同学把你的代码给覆盖了。4、你的代码有些测试不通过,有些是验证通过可以合并到master(生产)分支上的。
在这个时候你可能会慌了,因为自己写了这么多的东西,还要一个一个重新检查然后push到目标分支上,这个工作量是会随着代码量而不断递增的。
前三个问题常见的解决方法是把目标分支的代码pull到自己的开发分支上,然后逐个解决pull过程产生的conflicts,最后再把自己的分支与目标分支合并。这个方法如果是以功能进行分支的划分,并且代码改动量比较少,以及自己的功能和别的同学的功能交互程度不大的情况下是可行的,不过看起来不太聪明,而且分支会越来越来多,开发时切换分支或者pull操作会很频繁。
第四个问题与前三个问题的解决方法也是异曲同工之妙,首先从目标分支New一个branch,接着把自己正确的文件从旧分支复制到该branch上,最后合并到目标分支上。这种解决方法遇到改动文件量特别大的时候就不work啦,因为复制的时候可能会遗漏掉部分文件,或许也会把别人的代码给覆盖掉。