git分支规范
介绍
branch
- 每个repo有且仅有以下的 branch 和 tag。
Branch: master 、 dev 、 feat 、 release 、 hotfix
其中:
master 受保护,不存放源代码,不直接提交代码,所有的 上线文件 需要推送到此分支。
dev 受保护,主分支,不能直接提交代码,在这个分支只能增加从 feat 合并 过来的 commit。紧急bug除外,紧急bug处理方式看后文bugfix。
feat 分支需要从 dev 切出,然后开发完成后,提交合并请求到 release 分支进行提测。
release 分支需要从 dev 切出,用来对项目中各个需求进行合并提测,改 bug 等均在此分支进行,测试成功后,提交合并请求到 dev。
hotfix 分支需要 dev 切出,待 bug 修复完成后,提交合并请求到 dev. 即:
Tag
对应每个发布版本的源代码 tag。tag版本号与需求版本一致,从dev分支打tag,命名 release版本号日期,如:release_1.0_20200426
对应每个发布版本的上线文件 tag。tag版本号与需求版本一致,命名 dist版本号日期,如:dist_1.0_20200426
开发流程
从dev分支根据需求,检出分支
feat/xxxx
,即dev --> feat/xxxx
从dev分支检出预发环境测试分支
release/xxxx
,即dev --> release/xxxx
开发完成后将各个开发分支合并至此,即
feat/xxxx --> release/xxxx
,feat/yyyy --> release/xxxx
测试通过后,发起
merge request
,待code review
通过后,负责人 merge 代码,即release/xxxx --> dev
上线流程
确保所有研发分支 都已经 merge 到 release;
使用 release branch 的代码进行测试,如果发现 bug,把对应的 bugfix merge 到 release,测试成功后合并至dev分支;
在dev分支编译构建 使用脚本推送到 master 分支,抽包上线;(推送脚本往下看)
发布完成后在当前的 dev branch 打上对应版本的 tag,master分支打上对应的上线文件版本的tag。
Bugfix 流程
dev的bug,直接检出
hotfix/xxx
修正,修复完成测试通过后,merge 进 dev 分支; 即dev --> hotfix/xxxx --> dev
feat分支中的bug,直接在
feat/xxx
分支修复
其他
如果涉及到版本同时迭代问题,叫上相关人员,一块讨论一下确定分支开发方案
代码合并前是否需要代码评审,由项目负责人制定
前端自动化能否基于gitlab-ci做持续集成