Files
harmony-client/docs/git-workflow.md

105 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Git Workflow(分支模型与提交规范)
本仓库采用简化 Git Flow:`main`(生产)← `dev`(集成)← `feature/*`(功能)。
## 分支模型 Branch Model
| 分支 Branch | 用途 Purpose | 从哪拉出 From | 合入 To | 直接 push |
|-------------|-------------|---------------|---------|-----------|
| `main` | 生产 / 稳定,可发布 | — | — | ❌ 禁止(仅 PR) |
| `dev` | 集成 / 开发主线 | `main` | `main` | ❌ 禁止(仅 PR) |
| `feature/<name>` | 单个功能 / 改动 | `dev` | `dev` | ✅(推自己的 feature) |
| `hotfix/<name>` | 线上紧急修复 | `main` | `main` + `dev` | ❌(仅 PR) |
| `release/<version>` | (可选)发布候选 | `dev` | `main` + `dev` | ❌(仅 PR) |
## 分支命名 Branch Naming
- 功能:`feature/<kebab-case>`,如 `feature/architecture-scaffold`
- 修复:`fix/<kebab-case>` 或 `hotfix/<kebab-case>`
- 发布:`release/<semver>`,如 `release/v1.0.0`
## 提交规范 Commit Convention
遵循 Conventional Commits:`<type>(<scope>): <subject>`
- `type`:`feat` / `fix` / `docs` / `chore` / `refactor` / `test` / `build` / `perf` / `style` / `ci`
- `scope`:可选,模块名(`entry` / `uikit` / `common`)
- `subject`:祈使句,首字母小写,结尾不加句号
示例:
```
feat(entry): 建立 MVVM+data 分层骨架
chore(build): 注册 common/uikit 模块
docs: 新增架构设计文档
```
## 开发流程 Development Workflow
### 新建功能 Feature
```bash
git checkout dev
git pull
git checkout -b feature/xxx
# 开发 + 提交(conventional commits)
git add -A
git commit -m "feat(entry): ..."
git push -u origin feature/xxx
```
然后在 Gitea 发起 PR:`feature/xxx → dev`,评审通过后合并(推荐 **squash merge**,保持 `dev` 历史线性干净)。
合并后删除已合入的 feature 分支:
```bash
git checkout dev
git pull
git branch -d feature/xxx
git push origin --delete feature/xxx
```
### 发布 Release
简单场景直接发 PR `dev → main`(用 **merge commit** 保留发布边界),合并后打 tag:
```bash
git checkout main
git pull
git tag v1.0.0
git push --tags
```
复杂场景可引入 `release/<version>` 分支隔离发布修复:
```bash
git checkout -b release/v1.0.0 dev
# 修复 release 上的问题后,分别合回 main 与 dev 并打 tag
```
### 紧急修复 Hotfix
```bash
git checkout main
git pull
git checkout -b hotfix/xxx
# 修复 + 提交
git push -u origin hotfix/xxx
# PR: hotfix/xxx → main;再 PR: hotfix/xxx → dev(同步回开发主线)
```
## 硬规则 Hard Rules
1. **禁止直接 push 到 `main` 或 `dev`**,一律走 PR(建议在 Gitea 对这两个分支开启保护)。
2. **PR 合入前过 lint + 相关测试**,见 `docs/testing.md` 的「改动后验证」。
3. **feature 合并后删除分支**,保持分支列表干净。
4. **提交信息必须走 Conventional Commits**,不合规的提交在 PR 中 squash 掉。
5. **签名信息永不入库**——`build-profile.json5` 的 `signingConfigs` 必须保持空 `[]`,已由 pre-commit 钩子兜底,见 `docs/build-deploy.md` 的「签名管理」。
## 仓库设置 Repo Settings(一次性)
- 默认分支设为 `main`(Gitea → Settings → Branches → Default Branch)。
- 建议对 `main` / `dev` 开启分支保护(禁止直接 push,仅允许 PR 合并)。