Skip to main content
开发工具3 min read

Git 工作流最佳实践

Written by

Git:不只是版本控制 Git 是现代软件开发的基石,但很多团队并没有充分发挥它的潜力。一个好的 Git 工作流不仅是「保存代码历史」,更是: - 团队沟通的载体 - 代码质量的保障 - 项目进度的可视化 - 问题追溯的线索 分支策略 Git Flow Git Flow 是最经典的分支策略,适合有明确版本发布周期的项目...

Git:不只是版本控制

Git 是现代软件开发的基石,但很多团队并没有充分发挥它的潜力。一个好的 Git 工作流不仅是「保存代码历史」,更是:

  • 团队沟通的载体
  • 代码质量的保障
  • 项目进度的可视化
  • 问题追溯的线索

分支策略

Git Flow

Git Flow 是最经典的分支策略,适合有明确版本发布周期的项目:

  • main:生产代码,永远是可部署的
  • develop:开发主分支,集成所有功能
  • feature/*:功能分支,从 develop 拉出
  • release/*:发布准备分支
  • hotfix/*:紧急修复分支

优点:结构清晰,适合大型团队 缺点:流程较重,对小团队可能过度

GitHub Flow

更轻量的策略,适合持续部署的项目:

  • main:永远是可部署的
  • 功能分支从 main 拉出
  • 通过 PR 合并回 main
  • 合并即部署

优点:简单直接,适合快速迭代 缺点:缺乏明确的版本管理

Trunk-Based Development

最简化的策略,适合高度成熟的团队:

  • 只有 main(或 trunk)一个长期分支
  • 所有开发在 main 上进行
  • 使用 Feature Flag 控制未完成功能
  • 频繁提交,小步快跑

优点:避免合并地狱,强制持续集成 缺点:需要成熟的 CI/CD 和 Feature Flag 基础设施

我的建议

根据团队规模选择:

团队规模推荐策略
1-3 人GitHub Flow
4-15 人GitHub Flow + 简化 Git Flow
15+ 人Git Flow 或 Trunk-Based

Commit 规范

Conventional Commits

这是目前最广泛使用的 Commit 规范:

text
<type>(<scope>): <subject> <body> <footer>

常用的 type:

  • feat: 新功能
  • fix: Bug 修复
  • docs: 文档更新
  • style: 代码格式调整(不影响逻辑)
  • refactor: 重构
  • perf: 性能优化
  • test: 测试相关
  • chore: 构建、工具变更

示例

好的 commit message:

text
feat(auth): add JWT refresh token rotation Implement refresh token rotation to enhance security. When a refresh token is used, a new one is issued and the old one is invalidated. Closes #123

不好的 commit message:

text
fix stuff

为什么规范重要?

  • 自动化 Changelog:通过 type 自动生成变更日志
  • 快速定位git log --oneline 一目了然
  • Code Review:PR 标题和描述可以直接用 commit message
  • 回滚依据:出现问题时快速定位需要回滚的 commit

PR / MR 最佳实践

标题和描述

PR 标题应该简洁明了地描述变更内容:

markdown
## 变更内容 - 添加用户注册 API - 实现邮箱验证逻辑 - 添加注册相关单元测试 ## 测试 - [x] 单元测试通过 - [x] 手动测试注册流程 - [ ] 邮件发送测试(需要 staging 环境) ## 截图 (如有 UI 变更,附截图)

Review 规范

  • 小 PR:每个 PR 控制在 200-400 行以内
  • 自描述:PR 应该能独立理解,不需要额外背景知识
  • 及时 Review:24 小时内完成 Review
  • 建设性反馈:提出具体的改进建议,而不是笼统的「这里有问题」

常用 Git 技巧

交互式 Rebase

bash
# 修改最近 3 个 commit git rebase -i HEAD~3

可以合并、重排、修改 commit message,保持历史整洁。

Stash 管理

bash
# 临时保存工作区 git stash push -m "WIP: feature-x" # 查看所有 stash git stash list # 恢复并删除 git stash pop

Cherry-pick

bash
# 将某个 commit 应用到当前分支 git cherry-pick abc123

适合将 hotfix 应用到多个分支。

Bisect

bash
# 二分法查找引入 Bug 的 commit git bisect start git bisect bad # 当前版本有问题 git bisect good v1.0 # v1.0 没问题

Git 会自动帮你找到第一个出问题的 commit。

小结

一个好的 Git 工作流是团队效率的乘数。投入时间建立规范,在项目成长过程中会获得巨大的回报。记住:

  • 分支策略选择适合团队的,不要过度设计
  • Commit message 是写给人看的,也是写给未来的自己看的
  • PR 是交流的机会,充分利用 Code Review 提升代码质量
Luke

Written by

Luke

Developer, AI enthusiast, open-source contributor.