Rebase?Merge?这Git这么多讲究
发布人:zzk · 发布于 2026年8月12日 18:59
合并分为 快进合并,三路合并
策略还分为
Squash and merge (压缩合并)
Rebase and merge (变基合并)
Squash and merge (压缩合并)
不过我到没必要思考那麽多,我这个人项目,贡献者也只有我一个,选择压缩还是变基好像都行?
看看我这个Git工作流
1. 更新本地 `main`
- 切到 `main`
- 执行“签出并更新”
- 确保本地 `main` 与 `origin/main` 一致
2. 从 `main` 新建功能分支
- 功能:`feat/<feature-name>`
- 修复:`fix/<issue-name>`
- 文档:`docs/<topic-name>`
3. 在功能分支开发
- 只改本次迭代相关内容
- 完成对应测试、类型检查、Lint、构建
- 更新 `docs/iterations/` 迭代文档并记录 Migration/API 影响
4. 本地提交
- 暂存本次相关文件
- 使用 Conventional Commit,例如:
```text
feat(qas): show answer timestamps in QA lists
```
- 提交前确认没有误包含 `.env`、构建产物、`coverage/`、无关文档
5. 推送功能分支
- 首次推送时设置 upstream
- GitHub 出现对应远程功能分支
6. 创建 Pull Request
- `base: main`
- `compare: feat/...`
- PR 描述包含:变更内容、验证结果、Migration/API/权限影响
- 不要把方向反过来
7. 等待 CI/CD
- PR 的 Backend、Frontend、Deployment artifacts 全部通过
- 任意失败先修复功能分支、重新推送,CI 会自动重跑
- 合并到 `main` 后,CD 自动部署生产
8. 合并 PR
- 当前项目、单一迭代单一提交的惯例:选 `Squash and merge`
- 确认合并目标是 `main`
- 合并后删除 GitHub 上的远程功能分支
9. 本地收尾
- 切回 `main`
- “签出并更新”,拿到合并后的最终代码
- 删除本地 `feat/...` 分支
- 下次开发从这份最新 `main` 重复第 2 步