workflow-工作流
Git Flow 是一种广泛使用的 Git 分支管理策略,指导和支持多人协作和软件开发的不同阶段
分支介绍
主要分支
主分支(Master):
- 生产环境中运行的代码
开发分支(Develop):
- 此分支包含下一个发布周期中的代码。
- 所有功能分支都是基于此分支创建的,并最终合并回来。
- 当准备好发布新版本时,开发分支的代码会合并到主分支Master。
辅助分支
功能分支(Feature branches):
- 从开发分支Develop分出,用于开发新功能或改进。
- 命名通常以
feature/
开头。 - 开发完成后,合并回开发分支。
版本发布分支(Release branches):
- 从开发分支分出,用于准备即将发布的版本。
- 命名通常以
release/
开头。 - 在此分支上,可以进行最后的调整(如 bug 修复、文档改进等)。
- 一旦准备就绪,它会合并到主分支和开发分支。
修补分支(Hotfix branches):
- 从主分支分出,用于快速修补生产环境中的漏洞。
- 命名通常以
hotfix/
开头。 - 修复完成后,合并回主分支和开发分支。
工作流程
开发新功能:
- 从开发分支创建新的功能分支。
- 功能开发完成后,合并回开发分支。
准备发布:
- 从开发分支创建发布分支。
- 进行测试、文档编写和其他准备工作。
- 修复在此阶段发现的问题。
- 完成后,发布分支合并到主分支和开发分支。
修补漏洞:
- 从主分支创建修补分支。
- 完成修补后,合并回主分支和开发分支。
发布版本:
- 将主分支上的代码部署到生产环境。
优缺点
优点
- 结构清晰:每种类型的工作都有专门的分支,使流程易于管理。
- 支持并行开发:多个功能可以同时开发,互不影响。
- 容易维护:可以轻松地回滚整个功能。
- 持续发布:可以定期发布新版本,同时维护和修补旧版本。
缺点
- 复杂性:对于小团队或小项目,Git Flow 可能过于复杂。
- 多个长期分支:需要维护多个长期分支,可能导致分支混乱。
示例流程
1. 初始化 Git Flow
首先,你需要在你的 Git 仓库中初始化 Git Flow。这可以通过 Git Flow 的命令行工具完成,但也可以手动完成。
git flow init
此命令将会创建必要的分支并设置合适的默认配置。
2. 开发新功能
假设你要开发一个新功能,比如用户认证。
创建功能分支:
bashgit flow feature start user-authentication
这将基于
develop
分支创建一个名为feature/user-authentication
的新分支。开发功能:
在此分支上进行所有开发工作,比如编写代码、测试等。
完成功能开发:
bashgit flow feature finish user-authentication
这将把 feature/user-authentication
分支的更改合并回 develop
分支,并删除功能分支。
3. 准备发布新版本
当你准备发布一个新版本时(比如 1.0.0):
创建发布分支:
bashgit flow release start 1.0.0
这将从
develop
分支创建一个名为release/1.0.0
的发布分支。准备发布:
在此分支上进行最后的测试,修复任何小问题,并更新文档。
完成发布:
bashgit flow release finish 1.0.0
这将把
release/1.0.0
分支的更改合并到master
和develop
分支,同时创建一个标签1.0.0
。
4. 紧急修补
如果你在生产环境中发现了一个紧急的 bug,你需要创建一个修补分支:
创建修补分支:
bashgit flow hotfix start emergency-fix
这将从
master
分支创建一个名为hotfix/emergency-fix
的修补分支。修补并测试:
在此分支上进行修补工作并进行测试。
完成修补:
bashgit flow hotfix finish emergency-fix
这将把
hotfix/emergency-fix
分支的更改合并到master
和develop
分支,并创建一个新的标签(例如1.0.1
)。
5. 推送更改到远程仓库
在每个阶段完成后,不要忘记将更改推送到远程仓库:
git push origin develop
git push origin master
git push --tags
根据具体情况,可能还需要额外的 Git 操作,比如在合并分支前进行代码审查和合并请求(Pull Request)