# Git分支管理规范

## 分支类型

| 类型 | 分支名称 | 用途 | 特点 |
|------|----------|------|------|
| 主分支 | master | 正式版本代码归档 | 受保护，仅运维可合并 |
| 主分支 | develop | 日常开发主分支 | 团队开发基准 |
| 主分支 | doc | 文档、SQL脚本、配置 | 文档管理 |
| 辅助分支 | feature | 功能开发分支 | 临时性，合并后删除 |
| 辅助分支 | hotfix | Bug紧急修复 | 临时性，合并后删除 |

## 分支命名规则

### 功能分支
```
feature-{项目名}-{版本号}-SNAPSHOT-{日期}
```
示例：`feature-javadog-v2.1.1-SNAPSHOT-20240703`

### 个人分支
```
{功能分支}-{开发者姓名}
```
示例：`feature-javadog-v2.1.1-SNAPSHOT-20240703-zhangsan`

### 预生产分支
```
feature-{项目名}-{版本号}-{日期}
```
示例：`feature-javadog-v2.1.1-20240703`（去除SNAPSHOT标识）

### 热修复分支
```
hotfix-{项目名}-{版本号}-{日期}
```
示例：`hotfix-javadog-v2.1.2-20240705`

## 分支权限规则

1. master/develop/doc 分支受保护，仅运维可合并
2. 辅助分支为临时分支，合并后询问开发人员是否需要删除

## 开发流程规则

### 功能开发流程（五阶段）

| 阶段 | 操作 | 核心目的 |
|------|------|----------|
| 开发前 | 从develop拉取功能分支 | 保持团队起始点一致 |
| 开发中 | 组员从功能分支拉取个人临时分支 | 保证开发灵活性 |
| 提测中 | 个人分支合并到功能分支 | 流水线打包提测 |
| 预生产 | 从功能分支拉取预生产分支（去SNAPSHOT标识） | 环境验证解耦 |
| 上线 | 蓝绿部署，分支合并 | 无缝切换，稳定上线 |

### 热修复流程

1. 从 master 拉取 hotfix 分支
2. 修复 Bug 后合并回 master 和 develop
3. 合并后删除 hotfix 分支

## 蓝绿部署策略

- 定义：同时运行两个生产环境，通过切换实现无缝发布
- 优势：新版本测试期间不影响线上环境
- 流程：蓝线发布新版本 -> 验证通过 -> 蓝绿切换 -> 负载均衡

## 命名示例汇总

| 分支类型 | 命名格式 | 示例 |
|---------|---------|------|
| 功能分支 | `feature-{项目}-{版本}-SNAPSHOT-{日期}` | `feature-javadog-v2.1.1-SNAPSHOT-20240703` |
| 个人分支 | `{功能分支}-{姓名}` | `feature-javadog-v2.1.1-SNAPSHOT-20240703-zhangsan` |
| 预生产分支 | `feature-{项目}-{版本}-{日期}` | `feature-javadog-v2.1.1-20240703` |
| 热修复分支 | `hotfix-{项目}-{版本}-{日期}` | `hotfix-javadog-v2.1.2-20240705` |
