Git Flow

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;