在多组员、多项目、多环境进行协同工做时,若是没有统一规范、统一流程,则会致使额外的工做量、出现版本混乱或代码覆盖。因此要减小版本冲突,减轻没必要要的工做,就须要规范化的工做流程。git
新功能分支(Feature Branches)github
每个新的功能或者下一个迭代的任务,都应该建立一个独立的功能分支,从develop分支中派生出来。当功能完成后,要合并(merged)回develop分支,合并后它的生命周期就结束,能够删除。新功能分支不会与master分支有直接的交汇。如图: 服务器
发布分支(Release Branches)maven
一旦开发的功能已经知足发布条件(或预约发布日期接近),应该合并全部知足发布条件的新功能分支到develop分支中,而后,开出一个发布分支(Release),开始准备一个发布版本。Release这个分支上不能再添加新的功能,只有bug修复和该版本为导向的任务。一旦到了发布日期,Release就要合并回master发布,而且打出版本标签。另外还须要合并回develop分支,保证develop分支是最新的. ide
使用一个专门的分支来准备发布版本,使得一个团队能对当前版本进行抛光,而另外一个团队继续为下一个版本的功能作准备。它还创造了良好定义的发展阶段(例如,很容易说,“本周咱们正在准备4.0版”,并且真实地看到它在库中的结构)工具
维护分支(Maintenance Branches)测试
维护分支也就是线上bug修复分支,使用来快速修复生产环境的紧急问题 ui
这个分支是惟一一个开放过程当中直接从master分支派生来的分支。快速的修复问题后,它应该被合并回master和develop(或者当前发布分支),而后,master分支须要打一个版本标签。idea
下面具体演示如何使用工做流来管理版本发布周期。假设咱们已经存在或建立了一个源码中央存储仓库,默认建立了master分支。版本控制
7.1 建立develop分支
git branch develop git push -u origin develop
git clone git@github.org:search-cloud/demo.git git checkout -b develop origin/develop
develop这个分支将包含项目的完整历史记录,而master将包含缩略版本。
7.2 新建feature分支
git checkout -b feature/demo develop
git push
git status git add git commit -m "Add some-file."
7.3 完成新功能开发(合并feature分支到develop)
当肯定新功能开发完成,且联调测试经过,而且新功能负责人已经获得合并feature分支到develop分支的容许;这样才能合并feature分支到develop. (若是有两个新功能同时在开发,前一个功能合并到develop,但尚未发布到release,而且下一个版本又不在这个周期发布.则第二个功能不能合并到develop,不然会出现两个新功能同时要发布到release)
git pull origin develop git checkout develop git merge feature/demo git push git branch -d feature/demo
第一条命令是确保在合并新功能以前,develop分支是最新的
注意:
7.4 在测试环境发布develop分支代码(提交测试),也能够跳7.5建立release分支提测
7.5 线上版本发布流程
从develop中建立准备发布的release分支
当主测试流程完成,源码已经趋近于稳定状态,应该准备一个发布版本,确立版本号,并把master代码合并到release发布版,确保release是要发布的最新的代码
git checkout -b release-0.1.0 develop git merge master git push
这个分支是清理准备发布、 总体回归测试、 更新文档,不能在此分支添加与本次无关的新功能
一旦已经知足发布条件(或已经到了预约发布日期),应该把release分支合并到master分支和develop分支中,而后,使用master发布新版本。合并release分支到develop分支是很重要的,要让release上修改的东西能在后续的开发分支中生效。
git checkout master git merge release-0.1.0 git push
git checkout develop git merge release-0.1.0 git push git branch -d release-0.1.0
Release分支在功能开发分支(develop)和公共发布版(master)中,充当一个缓冲的做用。每当有源码合并到master中的时候,应该在master上打一个标签,以便后续跟踪查阅。
git tag -a 0.1.0.RELEASE -m "Initial public release" master git push --tags
7.6 线上Bug修复流程 当终端用户,反馈系统有bug时,为了处理bug,须要从master中建立出保营养支;等到bug修复完成,须要合并回master/develop:
git checkout -b issue-#001 master
git checkout master git merge issue-#001 git push
git tag -a 0.1.1.RELEASE -m "Initial public release" master git push --tags
git checkout develop git merge issue-#001 git push