Git Flow
少于1分钟
flowchart TD
A([开始]) --> A1[主分支 main];
A([开始]) --> A2[开发分支 develop];
Z([结束])
A2 --> A21[新增功能需求: 创建功能分支 feature-XXX];
A21 --> A22{新开发功能是否完成};
A22 --> |是| A221[提交代码执行 CI 阶段];
A221 --> A2211{Runner: 自动化构建与测试案例是否通过};
A2211 --> |是| A22111[从 develop 合并代码并删除 feature-XXX 分支];
A2211 --> |否| A222;
A22 --> |否| A222[继续开发自测完成后提交代码];
A222 --> A221;
A22111 --> Z;
A2 --> A31[累计功能发布: 创建发布分支 release-X.Y];
A31 --> A311{是否已存在 release-X.Y 分支};
A311 --> |是| A3111[从 develop 合并最新代码];
A311 --> |否| A3112[从 develop 创建最新分支];
A3111 --> A3113[监听合并或创建事件 触发CICD阶段];
A3112 --> A3113;
A3113 --> A31131{Runner: 自动化构建与测试案例是否通过};
A31131 --> |是| A311311[合并至 develop 分支];
A311311 --> A3113112[合并至 main 分支];
A31131 --> |否| A311312[在 release-X.Y 分支修复异常提交代码];
A311312 --> A3113;
A3113112 --> Z;
A1 --> A12[来自 release-X.Y 或 hotfix-XXX 的合并请求];
A12 --> A121{管理员确认是否允许};
A121 --> |是| A1211[确认合并];
A121 --> |否| A1212[拒绝合并];
A1212 --> A311312;
A1211 --> A13[提交标签 git tag vX.Y.Z];
A13 --> A131[使用 release-X.Y 或 hotfix-XXX 阶段构建的镜像进行部署];
A131 --> A1311{Runner: 自动化部署是否通过};
A1311 --> |是| Z;
A1311 --> |否| A311312;
A1 --> A11[线上环境发现BUG];
A11 --> A111{确认为BUG是否需修复};
A111 --> |是| A1111[从 main 仓库创建 hotfix-XXX 分支];
A111 --> |否| Z;
A1111 --> A112[仅修复BUG代码不涉及任何功能新增];
A112 --> A1121[提交代码在 hotfix-XXX 分支];
A1121 --> A11211{Runner: 自动化构建与测试案例是否通过};
A11211 --> |是| A112111[构建提交容器镜像];
A11211 --> |否| A1121;
A112111 --> A11212[合并至 develop 与 main 分支];
A11212 --> A11213[删除 hotfix-XXX 分支];
A11213 --> A12;
最后修改 27.01.2023: feat: 添加 git flow 与 github flow 流程图 (d507c84)