执行流程:
执行过程如下图:
执行过程:
- 基于online创建feature分支(AMKT-1111);
- 基于feature分支拉自已的开发分支(AMKT-1111-zsl);
- 开发完成后,将自已的分支(AMKT-1111-zsl)合并到feature分支(AMKT-1111)
- 联调时,feature分支merge到develop分支;
测试时,feature分支merge到qa分支;
预发环境验证时,feature分支merge到preview分支;(非必须:多feature进行preview验证时使用)
上线时,feature分支merge到online分支。
命令规范
master:暂不使用。
online:主分支,与线上保持一致。永久保留。
preivew:预发分支,多feature进行preview验证时使用,用完即删。
develop:开发分支,相对稳定分支,永久保留。develop分支online最终一致。重大上线后可删除从online重新生成。
qa : 测试分支,相对稳定分支,永久保留。develop分支online最终一致。重大上线后可删除从online重新生成。
feature:功能分支,story号。用完即删。
feature子分支:功能子分支,story号-人名全拼或者姓名首字母。用完即删。
hotfix-功能描述-人名全拼或者姓名首字母:线上bug修复分支。标注该分支处理的问题+开发人员。用完即删。
分支名称统一都是小写字母。
back-功能描述-人名:用于特殊保留分支,最后一个commit中要描述分支功能,描述过多,写在README.md中
名称示例:
AMTK-1111
AMTK-1111-zhangshaolin
hotfix-package-zsl
back-kafak-retry
back-getCustomerId-zsl(需要特别保留的)
冲突解决
如果feature分支合并到develop分支时出现冲突,不能在gitlab上merge,在gitlab上会污染feature分支。
解决冲突过程:
- 基于develop分支拉合并分支(AMKT-1111-develop);
- 将feature分支(AMKT-1111)合并到合并分支(AMKT-1111-develop);
- 将合并分支(AMKT-1111-develop)合并到develop分支;
- 上线时,feature分支merge到online分支。
问题:
1、一个冲突解决多次,merge到develop/qa/online都要解决冲突
2、如果测试后不上线,develop分支、qa、online分支容易被污染
对于问题一:有两种情况:
一种是feature分支与online不会有冲突,只是多feature并行开发导致,这种无解;对于这种情况,开发前尽量避免这种冲突过多的多feature分支,如果是新功能feature,看是否可以同时上线,功能不对外提供服务。
另一种是feature分支与online有冲突,可能是某一feature已上线,这种可以把online分支merge到feature分支。
对于问题二:重大上线后,删除develop、qa分支,从online重新拉取
注意:
- 解决冲突不能在gitlab上
- 不要用reset
- git commit msg 尽量 短小有意义
- 合并代码@maobing
- 代码先提develop分支,再提qa(只在develop分支deploy到私服)