管理 Git
功能开发工作流程
复制此清单并跟踪进度:
功能开发进度:
- [ ] 第一步:从主分支创建功能分支
- [ ] 第二步:进行原子提交的更改
- [ ] 第三步:基于最新的主分支进行变基
- [ ] 第四步:推送并创建PR
- [ ] 第五步:处理审查反馈
- [ ] 第六步:批准后合并
分支策略
GitHub 流程(推荐大多数项目使用)
main ──●────●────●────●── (始终可部署)
\ /
feature └──●──●──┘
main始终可部署- 从主分支创建功能分支
- PR + 审查 + 合并
- 合并后部署
Git 流程(适用于基于发布的项目)
main ──●─────────────●────── (仅发布)
\ /
release └────●────┘
/
develop ──●──●────●──●──●──
\ /
feature └──●┘
提交约定
约定提交格式
<type>(<scope>): <description>
[可选正文]
[可选脚注]
类型
| 类型 | 描述 |
|---|---|
feat |
新功能 |
fix |
修复bug |
docs |
仅文档 |
style |
格式化,无逻辑变化 |
refactor |
代码更改,既不修复bug也不添加功能 |
perf |
性能改进 |
test |
添加/更新测试 |
chore |
构建过程,依赖项 |
ci |
CI配置 |
示例
feat(auth): add OAuth2 login support
Implements Google and GitHub OAuth providers.
Closes #123
BREAKING CHANGE: Session tokens now expire after 24h
fix(api): handle null response from payment gateway
Previously caused 500 error when gateway returned null.
Now returns appropriate error message to user.
分支命名
<type>/<ticket-id>-<short-description>
# 示例
feature/AUTH-123-oauth-login
fix/BUG-456-null-pointer
chore/TECH-789-upgrade-deps
拉取请求工作流程
复制此清单以创建PR:
PR清单:
- [ ] 代码遵循项目约定
- [ ] 为更改添加/更新了测试
- [ ] 本地所有测试通过
- [ ] 与主分支无合并冲突
- [ ] 如有需要,文档已更新
- [ ] 未引入安全漏洞
- [ ] PR描述解释了"为什么"
PR模板
## 摘要
[更改的简要描述]
## 更改
- [更改1]
- [更改2]
## 测试
- [ ] 单元测试添加/更新
- [ ] 手动测试执行
- [ ] E2E测试通过
## 截图(如果UI更改)
[Before/After截图]
PR大小指南
| 大小 | 行更改 | 审查指导 |
|---|---|---|
| XS | < 50 | 快速审查 |
| S | 50-200 | 标准审查 |
| M | 200-500 | 彻底审查 |
| L | 500+ | 如可能则拆分 |
常见Git命令
日常工作流程
# 开始新功能
git checkout main
git pull
git checkout -b feature/TICKET-123-description
# 提交更改
git add -p # 交互式阶段
git commit -m "feat: description"
# 与主分支保持同步
git fetch origin main
git rebase origin/main
# 推送并创建PR
git push -u origin HEAD
修正错误
# 修改上次提交(推送前)
git commit --amend
# 撤销上次提交(保留更改)
git reset --soft HEAD~1
# 撤销上次提交(丢弃更改)
git reset --hard HEAD~1
# 撤销已推送的提交
git revert <commit-hash>
# 交互式变基以清理
git rebase -i HEAD~3
高级操作
# 选择特定提交
git cherry-pick <commit-hash>
# 查找破坏提交
git bisect start
git bisect bad HEAD
git bisect good <known-good-commit>
# 带消息的暂存
git stash push -m "WIP: feature description"
git stash list
git stash pop
提交验证
推送前验证提交:
提交验证:
- [ ] 每个提交都有清晰、描述性的提交信息
- [ ] 提交类型与更改匹配(feat, fix等)
- [ ] 无WIP或临时提交
- [ ] 未提交任何机密或凭证
- [ ] 更改是原子的(每个提交一个逻辑更改)
如果验证失败,请使用git rebase -i在推送前清理提交历史。