简介
分支开发(branch development)。它的特点就是项目的功能开发工作主要在从master主分支切出来的fe ature分支上。根据功能代码开发完毕后的项目发布,就出现了两种不同的发布模式:
分支开发-主干发布
分支开发-分支发布-合并回主干
案例需求:
n月 1 日 A项目发布1.0版本
n 月 2 日 A项目着手开发1.1 版本的新功能
n月 7 日 线上运行A项目的1.0版本出现问题,并与当日修复并发布1.01版本
n月 16日 线上运行A项目的1.0版本出现问题,并与当日修复并发布1.02版本 n 月 20日 A项目完成新版本功能,并发布1.1版本
注意:
1.01和1.02的修复代码过程不影响1.1正常发布
1.1 版本包含 1.01和1.02的修复代码功能
1. 分支开发-主干发布
分支开发-主干发布简介
分支开发-主干发布。它的特点就是项目的功能开发工作在从master主分支切出来的feature分支上,代码开发完毕后,经过功能测试没有问题后,在正式代码发布之前,先从master主分支获取最新/最完整的代码,合并到当前的feature分支上,进行整合功能测试,测试通过后,就将代码合并到master主功能分支上,发布代码的时候,只需要打一个release标签即可。如果进行下一个功能版本开发,那么就从master分支切出一个新的fea ture分支即可。
如果线上代码出现bug,那么就从master分支上切出来一个bug分支,修复该bug即可。
代码开发效果
代码开发原则
- 只能在功能feature分支上开发,不能直接在master主分支上开发
- feature分支代码开发完毕后,代码功能必须通过测试
- feature分支在合并到master分支前,获取最新的master分支内容,合并后进行功能测试,再合并到ma
ster- feature分支合并到master主分支后,应该停用该feature分支,最好删除。
- master主干上的每一次发布都是做了一个release标签而不是分支。
优势:
常见的一种代码开发方式。
团队人员在自己的feature分支工作,隔离其他工作的变动多个功能使用feature分支并行开发,互不影响
因为都是每次功能代码发布都是在之前基础上,所以代码内容调整起来比较容易,即使有冲突也可以快速解决
劣势:
feature分支最终要合并到master分支,若feature分支间代码有交互,导致master合并冲突(文件、语意)
feature分支代码测试,需要单独建立测试流水线,浪费资源,而且并未真正实施项目集成测试。
2. 分支开发-分支发布
分支开发-分支发布简介
分支开发-分支发布的特点就是项目的功能开发工作在从master主分支切出来的feature分支上,代码开发完毕后,经过功能测试没有问题后,然后直接在当前feature分支上进行代码发布,发布后,将feature分支的代码合并到master主分支上。如果进行下一个功能版本开发,那么就从master分支再切出一个新的feature分支即可。
如果线上代码出现bug,那么就可以直接在feature分支上修复,修复后,将代码合并回master分支;如果b ug功能很重要,可以单独从master分支上再切一个bug分支来修改。
分支开发-分支发布流程
代码开发原则
1. 只能在功能feature分支上开发,不能直接在master主分支上开发。
2. feature分支代码开发完毕后,代码功能必须通过测试。
3. feature分支代码功能通过测试后,直接进行代码发布。
4. feature分支代码发布后,将最终代码合并到master主分支,该feature分支作为版本可以一直存在下去优势:
最常见的代码开发方式
多个功能使用feature分支并行开发,互不影响
可以选择指定的feature分支进行代码发布,不会被其他功能阻塞。
劣势:
feature分支最终要合并到master上,若feature分支间代码有交互,导致合并冲突(文件、语意)。
feature分支发布后容易忘记合并回master主干。
feature分支代码测试,需要单独建立测试流水线,浪费资源,而且并未真正实施项目集成测试。
常见场景:
开源项目、多产品线的项目
3. 小结
分支开发分类:分支开发-主干发布、分支开发-分支发布
主干发布流程:拉取-开发-测试-拉取-测试-合并-发布(标签)-循环分支发布流程:拉取-开发-测试-发布-合并-循环