# Git Flow 分支策略 ## 概述 本项目采用 [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/) 分支模型,结合 GitHub Flow 的简洁性,适合本项目的发布节奏。 ## 分支结构 ``` main ← 生产环境,始终保持可发布状态 │ ├── develop ← 开发集成分支,所有功能分支合并至此 │ │ │ ├── feature/xxx ← 功能分支,从 develop 创建 │ │ │ ├── release/0.3.0 ← 发布分支,从 develop 创建 │ │ │ └── hotfix/0.2.10 ← 热修复分支,从 main 创建 ``` ## 长期分支 | 分支 | 用途 | 保护状态 | |------|------|----------| | `main` | 生产环境代码 | 强制保护,禁止 force push | | `develop` | 开发集成,所有功能最终汇入 | 建议保护 | ## 临时分支 | 前缀 | 用途 | 创建来源 | 合并目标 | |------|------|----------|----------| | `feature/` | 新功能开发 | `develop` | `develop` | | `release/` | 发布准备 | `develop` | `main` + `develop` | | `hotfix/` | 生产环境紧急修复 | `main` | `main` + `develop` | ## 工作流程 ### 1. 功能开发 (feature) ```bash # 从 develop 创建功能分支 git checkout develop git checkout -b feature/user-dashboard # 开发完成后,提交 PR 到 develop git push origin feature/user-dashboard ``` ### 2. 发布准备 (release) ```bash # 从 develop 创建发布分支 git checkout develop git checkout -b release/0.3.0 # 在 release 分支上做最后的修复和版本号更新 # 修复完成后,合并到 main 并打标签 git checkout main git merge release/0.3.0 --no-ff git tag -a v0.3.0 -m "Release v0.3.0" # 同时合并回 develop git checkout develop git merge release/0.3.0 --no-ff # 删除发布分支 git branch -d release/0.3.0 ``` ### 3. 热修复 (hotfix) ```bash # 从 main 创建热修复分支 git checkout main git checkout -b hotfix/0.2.10 # 修复完成后,合并到 main 并打标签 git checkout main git merge hotfix/0.2.10 --no-ff git tag -a v0.2.10 -m "Hotfix v0.2.10" # 同时合并回 develop git checkout develop git merge hotfix/0.2.10 --no-ff # 删除热修复分支 git branch -d hotfix/0.2.10 ``` ## 分支命名规范 ``` feature/-<简短描述> release/<版本号> hotfix/<版本号> ``` 示例: - `feature/123-user-dashboard` - `feature/456-oauth-integration` - `release/0.3.0` - `hotfix/0.2.10` ## 合并 (Merge) 策略 - **功能分支 → develop**:使用 `git merge --no-ff`,保留功能分支历史 - **release → main + develop**:使用 `git merge --no-ff` - **hotfix → main + develop**:使用 `git merge --no-ff` - **PR 合并**:在 GitHub 界面使用 "Squash and merge" 或 "Create a merge commit" ## 提交信息规范 采用 [Conventional Commits](https://www.conventionalcommits.org/) 格式: ``` (): [optional body] [optional footer] ``` ### Type 类型 | Type | 说明 | |------|------| | `feat` | 新功能 | | `fix` | Bug 修复 | | `docs` | 仅文档变更 | | `style` | 代码格式(不影响功能) | | `refactor` | 重构(不是修复也不是新功能) | | `perf` | 性能优化 | | `test` | 添加或修正测试 | | `chore` | 构建或辅助工具变更 | ### Scope 范围 使用受影响的主要模块: | Scope | 说明 | |-------|------| | `frontend` | 前端代码 | | `backend` | 后端通用 | | `api` | API 路由/Handler | | `service` | 业务逻辑层 | | `models` | 数据库模型 | | `k8s` | Kubernetes 部署 | | `deploy` | 部署配置 | | `git` | Git 相关功能 | | `room` | 实时聊天功能 | | `agent` | AI Agent 功能 | | `db` | 数据库/迁移 | ### 示例 ``` feat(frontend): add user dashboard page fix(api): handle nil pointer in workspace handler docs: update API documentation for /repos endpoints refactor(service): extract auth logic into separate module hotfix(k8s): add missing health probe for gitserver ``` ## 标签 (Tag) 策略 使用语义化版本号: ```bash # 发布标签 git tag -a v0.2.9 -m "Release v0.2.9" # 带签名的标签(推荐) git tag -s v0.2.9 -m "Release v0.2.9" ``` 版本号格式:`v..` - `major`:破坏性变更 - `minor`:新功能(向后兼容) - `patch`:Bug 修复 ## 分支清理 功能分支合并后应删除: ```bash # 删除本地分支 git branch -d feature/xxx # 删除远程分支 git push origin --delete feature/xxx ```