git功能比较强大 天然的以分支为主线,必然会导致分支暴增 如何管理和命名众多分支便为了我们的工作目标,可以针对功能开发分支、线上问题修复分支、发布分支上线后及时清理也变得尤为重要。
特别意义的分支列表:
master分支
代表最新的发布版本,当需要发布版本时可以直接从master分支上获取。不论哪类分支,都建议从master分支创建,并经常从master分支合并,减少将来集成到release分支时的合并冲突。
feature分支
feature为功能开发分支,这类分支应该和release分支隔离。来保证release是可测试的。只有功能开发分支达到测试准入标准后,才能合入release分支上进行统一的测试工作。
release分支
单release分支在脱离不同环境即测试环境、沙箱环境、线上环境绑定前提下存在是十分有必要的,可以很大程度减少何如成本。带来的风险是受不稳定的feature合入影响,导致发布周期延迟。这个风险的控制方案就是每个团队严格执行feature分支准入标准,经过QA验证后或测试通过后才能允许合入。这样能保证release分支上只做发布前回归验证工作即可上线,从而缩短release分支发布周期。
多release分支是单分支的扩展,目的是为并行功能测试或多环境测试准备的。每个feature分支都可以有对自己的release分支做为测试版本。在每个release分支足够稳定就可以发布,并通知其他进行中的release分支合并。其他release分支的合入通知必须在系统上完成来保存每个上线的release分支版本不覆盖。
hotfix分支
这类分支必须配合多release分支来使用,hotfix这种分支一般由master上衍生。为了快速响应线上问题每个hotfix分支都可以有release分支,具体把控应该交由团队来控制需要多少个release分支。本人建议根据线上问题的严重级别、影响范围来划分release的粒度来来降低各个release分支的成本。
小结
feature/hotfix->release->master 适合固定周期发版研发团队
feature/feature1/hotfix->release/release1->master 发版频率较快的研发团队