一篇能看懂的 Git 工作流指南
·
别再让 Git 成为你协作开发的绊脚石!
一、为什么需要 Git 工作流?
想象一下这个场景:
你和 5 个同事一起开发一个项目,大家都在改代码。张三改了登录功能,李四改了支付模块,王五正在修复一个紧急 bug… 如果没有统一的规则,代码合并时就会乱成一团麻。
Git 工作流就是一套"交通规则",告诉团队:
- 🚦 什么时候可以提交代码
- 🛣️ 代码应该放在哪个分支
- 🔄 如何安全地合并代码
- ⚠️ 出现问题时如何回滚
二、先搞懂这 3 个核心概念
在讲工作流之前,先快速理解 Git 的基石:
| 概念 | 通俗解释 | 类比 |
|---|---|---|
| 仓库 (Repository) | 存放项目所有代码和版本历史的地方 | 一个项目的"保险柜" |
| 分支 (Branch) | 代码的平行宇宙,可以独立开发不影响主线 | 游戏的"存档点" |
| 合并 (Merge) | 把两个分支的代码整合到一起 | 把两条河流汇合 |
main 分支 (主线) ────────────────────────────●─────────
\ /
feature 分支 (新功能) ───────●───────────●
三、4 种主流工作流,总有一款适合你
🟢 1. 集中式工作流(最简单)
适合:个人项目、2-3 人小团队、Git 新手
所有人直接推送到 main 分支
开发者 → main 分支
操作步骤:
# 每天开工先同步
git pull origin main
# 写代码...
# 提交推送
git add .
git commit -m "修复登录 bug"
git push origin main
✅ 优点:简单直观,学习成本低
❌ 缺点:容易冲突,main 分支不稳定
🟡 2. 功能分支工作流(推荐入门)
适合:中小团队、敏捷开发项目
main 分支 ─────────●─────────────────●─────────
\ /
feature/登录功能 ─────●─────────────●
\ /
feature/支付模块 ──────────●───────●
操作步骤:
# 1. 从 main 创建新功能分支
git checkout main
git pull
git checkout -b feature/login
# 2. 开发功能
# ...写代码...
git add .
git commit -m "feat: 完成登录页面"
# 3. 推送分支
git push origin feature/login
# 4. 创建 Pull Request,等待代码审查
# 5. 审查通过后合并到 main
✅ 优点:主线稳定,功能隔离,便于审查
❌ 缺点:需要配合代码审查流程
🔵 3. Git Flow(最规范)
适合:有固定发布周期的项目、传统软件、版本管理严格
main (生产) ────────●────────────────────● (v1.0)
\ /
develop (开发) ───────●──────●─────────●
\ / \ /
feature/A ──────────────● / \ /
feature/B ────────────────● \ /
release/v1.0 ────────────────────●
5 种分支角色:
| 分支 | 用途 | 命名示例 |
|---|---|---|
main |
生产环境,随时可部署 | - |
develop |
开发主干,集成功能 | - |
feature/* |
新功能开发 | feature/user-login |
release/* |
发布准备,测试修复 | release/v1.2.0 |
hotfix/* |
紧急修复 | hotfix/login-bug |
完整流程:
# 初始化
git branch develop
git push -u origin develop
# 开发新功能
git checkout -b feature/login develop
# ...开发...
git checkout develop
git merge --no-ff feature/login
# 准备发布
git checkout -b release/v1.0 develop
# ...测试修复...
git checkout main
git merge --no-ff release/v1.0
git tag v1.0
# 同步回 develop
git checkout develop
git merge --no-ff release/v1.0
✅ 优点:流程清晰,版本可控,适合正式发布
❌ 缺点:流程复杂,小团队可能过度工程化
🟣 4. GitHub Flow(最轻量)
适合:持续部署项目、SaaS 应用、开源项目
main (始终可部署) ────●───────────────●
\ /
feature/xxx ────────────●───────────●
(PR 审查后合并)
核心规则:
main分支永远保持可部署状态- 任何改动都从
main创建新分支 - 通过 Pull Request 进行代码审查
- 审查通过后立即合并并部署
✅ 优点:简单高效,适合快速迭代
❌ 缺点:不适合多版本并行维护
四、工作流选择指南
| 团队规模 | 项目类型 | 推荐工作流 |
|---|---|---|
| 1-3 人 | 个人/小项目 | 集中式 or 功能分支 |
| 3-10 人 | 敏捷开发 | 功能分支 or GitHub Flow |
| 10+ 人 | 企业软件 | Git Flow |
| - | 持续部署 SaaS | GitHub Flow |
| - | 多版本维护 | Git Flow |
五、6 条黄金最佳实践
1️⃣ 分支命名要规范
# ✅ 推荐
feature/user-login
bugfix/login-error
hotfix/payment-crash
release/v1.2.0
# ❌ 避免
test
new-feature
aaa
2️⃣ 提交信息要清晰
采用 Conventional Commits 规范:
# 格式:<type>: <description>
git commit -m "feat: 添加用户登录功能"
git commit -m "fix: 修复支付页面崩溃问题"
git commit -m "docs: 更新 API 文档"
git commit -m "refactor: 重构用户模块代码"
| 类型 | 含义 |
|---|---|
feat |
新功能 |
fix |
修复 bug |
docs |
文档更新 |
refactor |
代码重构 |
chore |
构建/工具相关 |
3️⃣ 每天开工先同步
# 养成习惯:每天第一件事
git checkout main
git pull origin main
4️⃣ 小步提交,频繁推送
# ✅ 好:每个功能点单独提交
git commit -m "feat: 添加登录表单"
git commit -m "feat: 添加表单验证"
git commit -m "feat: 添加登录 API"
# ❌ 坏:一次性提交所有
git commit -m "完成登录功能"
5️⃣ 保护主分支
在 GitHub/GitLab 设置:
- ✅ 禁止直接 push 到
main - ✅ 必须通过 Pull Request
- ✅ 至少 1 人代码审查
- ✅ CI 检查通过才能合并
6️⃣ 及时清理旧分支
# 查看已合并的分支
git branch --merged
# 删除本地已合并分支
git branch -d feature/login
# 删除远程分支
git push origin --delete feature/login
六、常见问题速查
❓ 合并冲突了怎么办?
# 1. 拉取最新代码
git pull origin main
# 2. Git 会标记冲突文件,手动编辑解决
# 3. 解决后标记完成
git add 冲突文件
git commit -m "解决合并冲突"
❓ 提交错了想撤回?
# 还没 push:撤销最后一次提交
git reset --soft HEAD~1
# 已经 push:创建新提交修正
git commit --amend
git push --force-with-lease # 谨慎使用
❓ 如何查看提交历史?
# 简洁视图
git log --oneline --graph
# 查看某个文件历史
git log --follow 文件名
七、总结:选对 work flow,效率翻倍
| 工作流 | 复杂度 | 适用场景 | 推荐指数 |
|---|---|---|---|
| 集中式 | ⭐ | 个人/超小团队 | ⭐⭐⭐ |
| 功能分支 | ⭐⭐ | 中小团队 | ⭐⭐⭐⭐⭐ |
| Git Flow | ⭐⭐⭐⭐ | 企业/正式发布 | ⭐⭐⭐⭐ |
| GitHub Flow | ⭐⭐ | 持续部署/开源 | ⭐⭐⭐⭐⭐ |
最后记住:
🎯 工作流没有绝对的好坏,只有适合不适合。
🎯 团队统一比流程完美更重要。
🎯 先从简单的开始,随着团队成长再升级。
更多推荐



所有评论(0)