由一次merge错误引发git 分支模型的思考
2016-06-28 11:09
513 查看
问题描述
上周上线, 把分支合并到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分支解耦合,并且每个分支有自己相对应的父分支,一般是子分支合并到父分支上,父分支一般不合并到子分支。如下图分支模型
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/01/3790b43e7d78aa692efe89e477c36949)
ps : http://nvie.com/posts/a-successful-git-branching-model/
综上:
1 两个分支不要互相耦合
2 有时候有文件冲突是好事,没有文件冲突则可能会有更大的问题。
3 知之为知之,不知为不知,是知也。
上周上线, 把分支合并到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分支解耦合,并且每个分支有自己相对应的父分支,一般是子分支合并到父分支上,父分支一般不合并到子分支。如下图分支模型
ps : http://nvie.com/posts/a-successful-git-branching-model/
综上:
1 两个分支不要互相耦合
2 有时候有文件冲突是好事,没有文件冲突则可能会有更大的问题。
3 知之为知之,不知为不知,是知也。
相关文章推荐
- iOS开发 Method Swizzling 方法替换
- nginx配置文件解析
- MySQL数据插入、修改、删除
- oracle 横表转纵表 cube函数及union all用法
- [codevs1506] 传话
- Ajax传地址
- EJB 企业级应用的架构(5)
- 学习记录 -- web.xml中security-constraint配置测试
- 页面导航随滚动条悬浮或者停靠
- MyBatis入门第1天--MyBatis基础知识(一)
- [马士兵J2SE学习笔记]第八章 流
- React 入门实例教程
- lintcode之Wood-Cut问题
- dom 节点(文档对象模型)详细介绍
- Android ObjectAnimator基础用法
- linux 策略路由实例解析
- Windows7+VS2012下64位OpenCV3.0+CUDA7.5的编译和部署
- Linux下文件内容查阅命令
- 不需要注解就能看出代码含义的一些方法
- 用开源工具Xplico助力网络应用层数据解码