1.git分支及工作流
当前工作流包含以下分支:
**master : ** 主存储分支;
**stage : ** 稳定测试分支;
**feature : ** 功能分支;
**hotfix : ** 热修复分支;
**develop : ** 开发分支;
**test : ** 乱入开发分支;
support : 支持开发分支;
任何发版均不预设版本号,仅在stage分支向master分支合并时才会打上版本号规则的标签, 版本号规则如下:
- 版本号命名vx.y.z, 例v1.2.3
- 当前stage上是hotfix,应在z版本号上加1
- 当前stage上是乱入需求或当前迭代提前发布需求或当前迭代需求,都应在y版本号上加1
- 当前stage上是support的,应在x版本号上加1
2.git工作流
git分支可分为master hotfix test stage develop support feature7类分支,以下对分支详细解释:
2.1 master分支
存储分支,发版分支
一般规则:
-
主干分支,用于存储发版;
-
仅允许stage分支合并;
-
hotfix分支、feature均直接自master分支拉取;
-
stage分支向master分支合并必须打上标签,标签命名为版本号。
冲突规则:
- master分支中如存在没有部署的代码,不允许合并。
2.2 stage分支
融合分支,协调分支
一般规则:
- stage分支可自test分支、develop分支、support分支、hotfix分支拉取;
- stage分支对应stage测试环境,stage测试环境也是预发环境;
- stage分支向master分支合并时,需打上版本号;
- hotfix、develop、support、test在合入stage前,如果发现master版本与当前版本有差异,例如master上已有hotfix、或乱入功能,但即将合入stage的develop迭代分支上没有这些,则需要先从master拉取一个新的stage后,再将develop合入这个stage分支,以进行融合性测试。
冲突规则:
- stage是融合的主要分支,如果时间允许,hotfix develop support可融合到stage分支,一同测试;
- 如果stage上存在测试分支,且无法融合,则创建新的stage分支等待测试, 新的stage分支命名规范未stage/分支名
- stage上等待测试的优先级顺序为:hotfix>乱入功能>develop>support, 如果遇到测试冲突,则协调按优先级测试。
2.3 feature分支
功能开发分支, 不需要紧急上线可跟迭代走的bug修复分支
一般规则
- 全部自master分支拉取
- 功能分支可分为迭代功能和乱入功能,任何迭代中需要提前发布的功能均转换为乱入功能
- 跟着迭代的bug修复,命名规范建议为bugfix/分支名
- 迭代feature及bugfix都应合入develop分支进行测试;
- 乱入功能都应合入test分支进行测试;
- feature命名规范为feature/分支名
- feature都在本地保存,如果需要协作或在家办公,可推倒远程,但在推倒develop test分支后,应予以删除
冲突规则
本地分支,不需要解决冲突
2.4 develop分支
迭代开发测试分支
一般规则
- 每次迭代开始时自master分支拉取,由迭代feature分支合入,对应测试环境;
- 测试完成后合入stage分支,进行融合测试;
冲突规则
- develop作为迭代测试分支存在,如果当前迭代因故延误,未测试完成下一迭代已开始,则创建新的迭代作为新迭代存储测试分支, 命名规范为develop/分支名。
- develop/分支名 最多保留2个月
2.5 test分支
乱入功能测试分支
一般规则
- 自乱入功能feature创建,对应test测试环境,同一个时间段内只能保留一个乱入功能;
- 测试完成后合入stage分支,进行融合测试;
冲突规则
- test作为乱入测试分支存在,如果当前测试因故延误,下一功能已完成,则创建新的test分支,命名规规为test/分支名
- test/分支名 最多保留2个月
2.6 support分支
组件,跨领域项目开发分支、专项分支
一般规则
- 每次单项(组件,跨领域项目,单项修复)开始时,均自master分支拉取, 直接在support分支上开发;
- 多人协作,可从support拉取feature分支,开发完成后合入support分支
- 每个support有该support负责人在本地进行测试,测试完成后合入stage分支进行融合测试;
冲突规则
- 同1时间存在多个support, 则创建新的support分支,命名规范为support/分支名
2.7 hotfix分支
热修复分支
一般规则
- 全部自master分支拉取;
- 开发自测完成后合入stage分支进行融合测试。
冲突规则 不包含冲突
3 merge合并
- 任何分支向另一分支合并时都应该使用
git merge --no-ff
而不是直接git merge