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

3.3 KiB
Raw Blame History

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

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 分支:

git checkout dev
git pull
git branch -d feature/xxx
git push origin --delete feature/xxx

发布 Release

简单场景直接发 PR dev → main(用 merge commit 保留发布边界),合并后打 tag:

git checkout main
git pull
git tag v1.0.0
git push --tags

复杂场景可引入 release/<version> 分支隔离发布修复:

git checkout -b release/v1.0.0 dev
# 修复 release 上的问题后,分别合回 main 与 dev 并打 tag

紧急修复 Hotfix

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 合并)。