3 Commits

Author SHA1 Message Date
AndyChen1024
84233fa0b8 Merge branch 'dev' into main 2026-09-11 17:08:07 +08:00
AndyChen1024
a25eab2d61 Merge branch 'feature/git-workflow' into dev 2026-09-11 17:08:01 +08:00
AndyChen1024
c4f678e299 docs: 新增 Git 分支模型与提交规范(docs/git-workflow.md,同步 AGENTS.md 文档地图与权限) 2026-09-11 17:07:36 +08:00
2 changed files with 105 additions and 1 deletions

View File

@@ -72,6 +72,7 @@ harmony-client/
| 编码规范 Conventions | `docs/conventions.md` |
| 测试 Testing | `docs/testing.md` |
| 构建/签名/部署 Build & Deploy | `docs/build-deploy.md` |
| 分支模型与 Git 规范 Git Workflow | `docs/git-workflow.md` |
## Common Tasks
@@ -92,7 +93,7 @@ harmony-client/
**禁止 Forbidden**
- 修改签名配置(`build-profile.json5` 的 `signingConfigs`)
- 删除测试文件
- push 到 main/master
- push 到 main 或 dev(一律走 PR)
- 往 `local.properties` / `.env` 写真实密钥
- 未经批准安装生产依赖

103
docs/git-workflow.md Normal file
View File

@@ -0,0 +1,103 @@
# 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 掉。
## 仓库设置 Repo Settings(一次性)
- 默认分支设为 `main`(Gitea → Settings → Branches → Default Branch)。
- 建议对 `main` / `dev` 开启分支保护(禁止直接 push,仅允许 PR 合并)。