背景:用户确认仓库只保留 main,不再创建任何远程分支或走 PR 合并。 改动: - 01-Git规范 V1.1:仅 main 直推,禁止非 main 分支推送、force push 与 Merge commit; - AGENTS V1.1:变更流程改为直接提交并推送 main; - 07-CodeReview:PR 模板改为提交说明,合并流程改为推送与推送后观察; - 03/06/工程规范 README 同步去除 PR 措辞; - CI 仅保留 push main 与 workflow_dispatch 触发。 影响面:仅流程与文档,无代码/数据/接口变更。 回滚方式:git revert 本提交即可恢复旧流程。 验证:format:check、lint、typecheck 全绿(10/10)。
This commit is contained in:
1 parent
046dad463e
commit
dd01b89214
7 files changed
+74
-81
No files matched your search
+21
-30
@@ -2,7 +2,7 @@
|
||||
|
||||
| 项 | 内容 |
|
||||
| --- | --- |
|
||||
| 文档版本 | V1.0(2026-11-02) |
|
||||
| 文档版本 | V1.1(2026-11-02) |
|
||||
| 依据 | 技术架构 §4.6(CI/CD)、§10.1(仓库结构) |
|
||||
| 适用范围 | 全仓库(代码、文档、配置、迁移) |
|
||||
| 强制级别 | 强制 |
|
||||
@@ -11,25 +11,18 @@
|
||||
|
||||
## 1 分支模型
|
||||
|
||||
采用 **trunk-based(主干 + 短生命周期分支)**,不建 `develop`、不建长期 `release` 分支。
|
||||
采用 **仅 main 直推**:仓库只保留 `main` 一条分支,不建 `develop`、`release`、`feat/*`、`docs/*` 等任何本地或远程分支。
|
||||
|
||||
| 类型 | 命名 | 用途 | 生命周期 |
|
||||
| --- | --- | --- | --- |
|
||||
| 主干 | `main` | 始终可发布 | 永久 |
|
||||
| 功能 | `feat/<scope>-<简述>` | 新功能 | ≤ 5 天,超过须拆分 |
|
||||
| 修复 | `fix/<scope>-<简述>` | 缺陷修复 | ≤ 2 天 |
|
||||
| 文档 | `docs/<简述>` | 仅文档 | ≤ 1 天 |
|
||||
| 重构 | `refactor/<scope>-<简述>` | 行为不变的结构调整 | ≤ 3 天 |
|
||||
| 其他 | `chore/` `test/` `perf/` `build/` `ci/` | 对应类型 | ≤ 2 天 |
|
||||
| 类型 | 名称 | 用途 | 生命周期 |
|
||||
| ---- | ------ | ------------------------ | -------- |
|
||||
| 主干 | `main` | 唯一长期分支,始终可发布 | 永久 |
|
||||
|
||||
规则:
|
||||
|
||||
- `GIT-01` 分支名全小写 kebab-case,≤ 50 字符,**不含中文**;`scope` 用模块或包名(`api` / `web` / `worker` / `media` / `db` / `ci` / `docs`)。
|
||||
- `GIT-02` 分支必须从最新 `main` 拉出,合并前 rebase 到 `main` 最新。
|
||||
- `GIT-03` 禁止直接 push `main`;分支保护开启:必须 PR + CI 绿 + ≥1 批准。
|
||||
- `GIT-04` 合并后立即删除远端分支。
|
||||
|
||||
---
|
||||
- `GIT-01` 所有提交直接基于最新 `main`;提交前先 `git pull --ff-only`,避免落后。
|
||||
- `GIT-02` 禁止创建并推送任何非 `main` 分支;确需本地验证时可临时创建,但不得推送,完成后立即删除。
|
||||
- `GIT-03` 允许直接 push `main`;推送前必须通过本地门禁(`format:check`、`lint`、`typecheck`、`test`),推送后立即确认 CI。
|
||||
- `GIT-04` 禁止 force push `main`;禁止 Merge commit;`main` 必须保持线性。
|
||||
|
||||
## 2 提交信息(Conventional Commits 1.0)
|
||||
|
||||
@@ -105,15 +98,13 @@ export default {
|
||||
|
||||
---
|
||||
|
||||
## 3 PR 与合并
|
||||
## 3 提交、推送与 Review
|
||||
|
||||
- `GIT-12` PR 标题遵循提交规范(Squash 后即主干提交信息)。
|
||||
- `GIT-13` 合并方式统一 **Squash Merge**,保持 `main` 线性;禁止 Merge commit。
|
||||
- `GIT-14` 单个 PR 变更 ≤ 400 行(含测试,不含 lock 文件与生成代码);超出须拆分并在描述说明依赖关系。
|
||||
- `GIT-15` 禁止 force push `main` / 已有人 Review 的公共分支;个人分支允许 `--force-with-lease`。
|
||||
- `GIT-16` PR 描述模板与双人 Review 场景见 [07-CodeReview与PR规范](07-CodeReview与PR规范.md)。
|
||||
|
||||
---
|
||||
- `GIT-12` 直接推送到 `main` 的提交即主干提交,提交信息按 §2 执行。
|
||||
- `GIT-13` 禁止 Merge commit 等分支合并方式;一次提交只做一件事,`main` 保持线性。
|
||||
- `GIT-14` 单个提交变更 ≤ 400 行(含测试,不含 lock 与生成代码);里程碑批次超出须在提交说明注明原因与拆分计划。
|
||||
- `GIT-15` 禁止 force push `main`;已推送提交不回改写,修复一律用新提交前向修复。
|
||||
- `GIT-16` Review 要求见 [07-CodeReview与PR规范](07-CodeReview与PR规范.md):高风险变更推送前完成双人走查,普通变更至少自查并在推送后 24 小时内走查。
|
||||
|
||||
## 4 Tag 与发布
|
||||
|
||||
@@ -122,25 +113,25 @@ export default {
|
||||
| 版本号 | 语义化 `v<主>.<次>.<补>` |
|
||||
| 打 Tag 时机 | 生产发布前,由发布负责人在 `main` 打 annotated tag |
|
||||
| 里程碑 Tag | `m0` / `m1` / `m2`…(对应 PRD 分期),仅标记不进版本链 |
|
||||
| 发布记录 | 每个 Tag 必须写变更摘要(可复用 PR 标题集合) |
|
||||
| 发布记录 | 每个 Tag 必须写变更摘要(可复用提交标题集合) |
|
||||
| 回滚 | 回滚用新 Tag(`v1.2.1` 回滚 `v1.2.0` 内容),**禁止删除已发布 Tag** |
|
||||
|
||||
---
|
||||
|
||||
## 5 大文件与二进制
|
||||
|
||||
- `GIT-17` 禁止入库 > 10 MB 的二进制(PSD 模板、成片、视频、字体包),一律走对象存储;确需入库(如开源字体)用 **Git LFS** 并在 PR 说明。
|
||||
- `GIT-17` 禁止入库 > 10 MB 的二进制(PSD 模板、成片、视频、字体包),一律走对象存储;确需入库(如开源字体)用 **Git LFS** 并在提交说明。
|
||||
- `GIT-18` 禁止入库:`.env*`、密钥、证书私钥、构建产物、`node_modules/`、日志、`项目参考/`。
|
||||
- `GIT-19` `pnpm-lock.yaml` 必须提交且与 `package.json` 同步;**禁止**手工编辑 lock 文件。
|
||||
- `GIT-20` 误提交敏感信息:立即轮换密钥 → 用 `git filter-repo` 清理历史 → 全员重新 clone → 记录复盘。
|
||||
|
||||
---
|
||||
|
||||
## 6 检查清单(提交前 / 合并前)
|
||||
## 6 检查清单(提交前 / 推送前)
|
||||
|
||||
- [ ] 分支名符合 `GIT-01`,从最新 `main` 拉出
|
||||
- [ ] 提交基于最新 `main`,已同步远端
|
||||
- [ ] 提交信息为**中文**且符合 Conventional Commits(含 `scope`),subject 无句末标点
|
||||
- [ ] 提交粒度单一,无无关文件
|
||||
- [ ] 无 `.env` / 密钥 / 大文件
|
||||
- [ ] PR 描述含背景 / 影响面 / 回滚方式 / 验证证据
|
||||
- [ ] CI 全绿,Review 通过,Squash 合并
|
||||
- [ ] 提交说明含背景 / 影响面 / 回滚方式 / 验证证据
|
||||
- [ ] 本地门禁全绿,已 push `main` 并确认 CI
|
||||
Reference in new issue
Block a user