天天看点

由一次merge错误引发git 分支模型的思考

问题描述

    上周上线, 把分支合并到master后上线,结果出现了有bug,发现是代码合并有问题,但是在合并过程中git对该文件的处理并没有提示给我任何的冲突信息,合并代码怎么被覆盖的呢?经过一番思考,过程是这样的,不合理的git 模型使用会出现一些问题。

分支A 和master      1 在master上进行了部分bug修改     2 在分支A上同时开发新功能。     3 合并分支的时候,先把master的内容合并到分支上(把master上修改的bug合并到A分支上,这样可能会把A上最新修改的文件覆盖掉)     4 再把分支的内容合并到master上。

    这样操作,可能会把分支A中的最新的一部分代码覆盖掉,master merge 到A, A再merge到master上, 这样两个分支的耦合性太大,所以会出现代码覆盖问题。

问题的解决     1 如果不改变git branch modle的话, 我们注意最好不要把master 的合并到分支上,只有分支合并到master上。     2 改变模型,在master不做bug的修改。master不做任何修改,master主干是各个分支合并过来,在修改bug的时候,建立了一个hotfix分支,这样再进行合并。 不同的分支 有不同的用途,和master分支解耦合,并且每个分支有自己相对应的父分支,一般是子分支合并到父分支上,父分支一般不合并到子分支。如下图分支模型

由一次merge错误引发git 分支模型的思考

    ps : http://nvie.com/posts/a-successful-git-branching-model/ 综上:     1 两个分支不要互相耦合     2 有时候有文件冲突是好事,没有文件冲突则可能会有更大的问题。     3 知之为知之,不知为不知,是知也。

继续阅读