Git 工作流全面解析
本文参考 hifreud 和 阮一峰 的内容,系统梳理主流的 Git 工作流方案,帮助你选择最适合团队协作和项目管理的版本控制流程。
为什么需要工作流?
合理的工作流可以:
- 明确分支职责,减少冲突
- 规范开发、测试、发布流程
- 提高协作效率和代码质量
主流 Git 工作流对比
Git flow
Git flow 是最经典的分支管理模型,适合有明确发布周期的项目。
master
|
|--------------------|
| |
develop hotfix
|
|--------------------|
| |
feature release
分支类型与操作:
master
:生产环境分支,只保存已发布版本develop
:开发主分支,集成所有功能feature/*
:新功能开发分支release/*
:发布准备分支hotfix/*
:紧急修复分支
常用 Git 命令:
新建功能分支并开发:
git checkout develop
git checkout -b feature/awesome-feature
# 开发并提交
git add .
git commit -m "feat: add awesome feature"
git checkout develop
git merge feature/awesome-feature
git branch -d feature/awesome-feature
准备发布:
git checkout develop
git checkout -b release/v1.0.0
# 修复bug、准备发布
git add .
git commit -m "fix: release bugfix"
git checkout master
git merge release/v1.0.0
git tag v1.0.0
git checkout develop
git merge release/v1.0.0
git branch -d release/v1.0.0
紧急修复:
git checkout master
git checkout -b hotfix/urgent-fix
# 修复并提交
git add .
git commit -m "fix: urgent bug"
git checkout master
git merge hotfix/urgent-fix
git tag v1.0.1
git checkout develop
git merge hotfix/urgent-fix
git branch -d hotfix/urgent-fix
优缺点:
- 优点:适合大型项目和多版本维护,流程规范
- 缺点:分支较多,操作复杂,不适合持续交付
Github flow
Github flow 更加简单,适合持续交付和小型项目,主分支始终可部署。
main
|
|-- feature-1
| |
| |-- Pull Request
| |
|-- feature-2
|
|-- Pull Request
流程步骤与操作:
新建功能分支并开发:
git checkout main
git checkout -b feature/short-desc
# 开发并提交
git add .
git commit -m "feat: short description"
git push origin feature/short-desc
发起 Pull Request,代码评审、自动测试通过后合并到 main:
# 在 GitHub 网页发起 PR,合并后本地同步
git checkout main
git pull origin main
git branch -d feature/short-desc
优缺点:
- 优点:流程简单,易于理解和执行,适合持续集成和持续部署(CI/CD)
- 缺点:不适合多版本并行开发,发布流程不够细致
Gitlab flow
Gitlab flow 结合了 Git flow 和 Github flow,支持多环境和多版本发布,适合企业级项目。
production
|
pre-production
|
main
|
|------|
feature bugfix
|
release
分支类型与环境:
production
:生产环境分支pre-production
:预发布环境分支main
:开发主分支feature/*
、bugfix/*
、release/*
:功能、修复、发布分支
典型流程与操作:
开发分支:
git checkout main
git checkout -b feature/new-feature
# 开发并提交
git add .
git commit -m "feat: new feature"
git push origin feature/new-feature
# 合并到 main
git checkout main
git merge feature/new-feature
git branch -d feature/new-feature
发布到预生产环境:
git checkout pre-production
git merge main
# 测试通过后
git checkout production
git merge pre-production
优缺点:
- 优点:灵活支持多环境和多版本,适合复杂项目和企业团队
- 缺点:流程较为复杂,需要团队协作规范
总结
- Git flow:适合有发布周期、版本维护需求的项目
- Github flow:适合持续交付、快速迭代的小型项目
- Gitlab flow:适合多环境、多版本、企业级项目
选择合适的工作流,能让你的团队协作更高效,代码管理更规范。
参考资料: