# Edu Git 工作流规范 > 版本:1.1 > 日期:2026-07-08 > 状态:基线发布(v1.1:scope-enum 对齐 + CODEOWNERS) > 适用范围:Edu 多语言 monorepo(pnpm workspace + go.work + pyproject.toml) > 关联文档: > > - [项目规则](../../.trae/rules/project_rules.md) > - [编码规范](./coding-standards.md) > - [迁移指南](../../MIGRATION_GUIDE.md) > - [架构总览](../architecture/001_architecture_overview.md) --- ## 目录 1. [分支策略](#一分支策略) 2. [Conventional Commits 规范](#二conventional-commits-规范) 3. [commitlint + husky 配置](#三commitlint--husky-配置) 4. [PR 与 Code Review](#四pr-与-code-review) 5. [文档同步规则](#五文档同步规则) 6. [多语言 monorepo 提交规则](#六多语言-monorepo-提交规则) 7. [版本与发布](#七版本与发布) 8. [紧急回滚](#八紧急回滚) 9. [附录:CICD 与 Edu Git 工作流差异](#九附录cicd-与-edu-git-工作流差异) --- ## 一、分支策略 ### 1.1 主干开发(Trunk-Based Development) 本项目采用**主干开发**模式,所有变更最终合并至 `main` 分支。 **核心原则**: - `main` 分支始终保持可发布状态 - 短生命周期特性分支(通常 ≤ 3 天) - 频繁集成,每天至少一次 rebase/merge 至最新 `main` - 通过特性开关(Feature Flag)控制未完成功能的暴露 ### 1.2 分支模型 ```mermaid gitGraph commit id: "init" commit id: "P1-foundation" branch feat/identity-service checkout feat/identity-service commit id: "scaffold" commit id: "implement-login" commit id: "add-tests" checkout main merge feat/identity-service tag: "v0.2.0" branch fix/jwt-expiry checkout fix/jwt-expiry commit id: "fix-token-refresh" checkout main merge fix/jwt-expiry tag: "v0.2.1" branch release/v0.3 checkout release/v0.3 commit id: "freeze" commit id: "hotfix" checkout main merge release/v0.3 tag: "v0.3.0" ``` ### 1.3 分支命名规范 | 分支类型 | 前缀 | 示例 | 生命周期 | | -------- | ----------- | ---------------------------- | ---------- | | 主干 | `main` | `main` | 永久 | | 特性 | `feat/` | `feat/identity-service` | ≤ 3 天 | | 修复 | `fix/` | `fix/jwt-expiry` | ≤ 1 天 | | 重构 | `refactor/` | `refactor/split-data-access` | ≤ 5 天 | | 性能 | `perf/` | `perf/query-optimization` | ≤ 3 天 | | 文档 | `docs/` | `docs/api-specification` | ≤ 2 天 | | 发布 | `release/v` | `release/v0.3.0` | 发布周期内 | | 热修复 | `hotfix/` | `hotfix/v0.3.1` | ≤ 1 天 | **规则**: - 分支名使用 kebab-case - 一个分支只做一件事,禁止在一个分支内混合多个无关变更 - 特性分支命名包含服务/模块名(`feat/identity-service` 而非 `feat/login`) ### 1.4 分支保护规则 **`main` 分支保护**: - 禁止直接 push,必须通过 PR - 至少 1 名 Reviewer 审批通过(核心模块需 2 名) - 所有 CI 检查通过(lint + typecheck + test + build) - 分支必须与 `main` 保持最新(无冲突或已 rebase) - 禁止 force push **`release/*` 分支保护**: - 禁止直接 push,仅接受 cherry-pick 或特定 hotfix PR - 至少 2 名 Reviewer 审批 - 发布完成后打 tag 并归档 --- ## 二、Conventional Commits 规范 ### 2.1 提交信息格式 所有提交信息必须遵循 [Conventional Commits 1.0.0](https://www.conventionalcommits.org/zh-hans/): ``` ():