第 3 章 分支策略
新建分支前确认类型与命名。未经维护者许可不建非标准分支。
3.1 五种分支类型
| 类型 | 前缀 | 来源 | 合并目标 | 寿命 |
|---|---|---|---|---|
| 主分支 | `main` | — | — | 永久 |
| 功能分支 | `feature/*` | `main` | `main` | 完成即删 |
| 修复分支 | `fix/*` | `main` | `main` | 完成即删 |
| 实验分支 | `experiment/*` | `main` | **不合并** | 归档或删 |
| 文档分支 | `docs/*` | `main` | `main` | 完成即删 |
3.2 main
- 唯一长期分支,始终可编译、可运行、可复现。
- 禁止任何角色直接提交;受保护:禁止直推、禁止强推,PR 审核通过才可合并,仅维护者可合并。
3.3 feature/*
- 命名
feature/<模块>-<描述>,例feature/ppp-ambiguity-resolution。 - 一个分支只做一件事,寿命不超过两周。长期未合并需与
main同步:
git checkout main
git pull origin main
git checkout feature/xxx
git rebase main
rebase 保持历史线性;若已推送到远程,rebase 后需 git push --force-with-lease(仅限自己独占的功能分支,不得用于 main)。
3.4 fix/*
- 命名
fix/<模块>-<问题>,例fix/filter-matrix-dim。 - 优先处理,维护者 24 小时内审查,修复后同步更新测试。
3.5 experiment/*
- 命名
experiment/<主题>-<日期>,例experiment/lstm-attenuation-202607。 - 不合并到 main。必须写实验记录(
templates/experiment-record.md)。 - 成果要进正式代码:新建
feature/*手动移植后走 PR。 - 不再活跃时打
archive/exp-*tag 后删除。
3.6 docs/*
- 命名
docs/<主题>,例docs/api-usage。审核侧重内容与格式。
3.7 分支清理
git checkout main
git pull origin main
git branch -d feature/xxx
远程分支由维护者合并时勾选"删除源分支"或手动删除。
3.8 参考样例
体验规范命名与 rebase 同步:
git checkout main
git pull origin main
git checkout -b docs/branch-practice
git add README.md
git commit -m "docs(repo): 练习分支命名"
git checkout main
git pull origin main
git checkout docs/branch-practice
git rebase main
若 rebase 中提示冲突,按第 9 章解决后 git rebase --continue。
自检:
python scripts/check-quest.py 3