问题:Git flow workflow是什么?
- Git:是一款开源的分布式版本控制系统
- Workflow:工作流,是指完成操作或办公协作等操作时,要遵循的一套规范流程
- Git flow workflow:使用 git 要遵循的一套规范(称为分之管理模型),有助于项目开发和发布的有序、高效
分支分类:
- 主分支:master、develop
- 辅助分支:feature、release、hotfix
概览git flow流程:
各分支理解:
分之名 | master | develop | feature | release | hotfix |
---|---|---|---|---|---|
作用 | 存放production-ready状态代码;标记tag表示发布里程碑 | 整合并存放最新的开发版代码,所有的功能将用于下一次release | 功能分支,开发人员本地开发新功能 | 用于发布下一个新的产品版本;腾出dev分支,便于后续功能开发 | 修复线上bug,不影响develop分支上的开发 |
位置 | 存在于远程库 | 远程或本地 | 本地 | 本地 | 本地 |
周期 | 版本库初始化后一直存在 | 开始开发后一直存在 | 当前feature开发期间 | 版本功能开发完到发布并打tag | 确认要修复bug到重新发布到master并打tag |
来源 | 仓库初始化; merge from develop / release / hotfix | branch from master; merge from feature / release / hotfix | branch from develop | develop / hotfix | latest master tag |
去向 | - - | - - | develop / 丢弃 | 合并 develop / master | 合并 develop / master |
命名 | - - | - - | feature-* feature-showList | release-* release-1.0.1 | hotfix-* hotfix-1.0.1 |
修复线上bug流程:
// 创建hotfix分支
git checkout -b hotfix-2.1.0 master
// 修改完成后合会master
git checkout master
git merge --no--ff hotfix-2.1.0
git push
// 合并会develop分支
git checkout develop
git merge --no--ff hotfix-2.1.0
git push
// 删除hotfix-*分支
git branch -d hotfix-2.1.0
// 打tag
git tag -a v2.1.0 master
git push --tags
git flow 优缺点:
优点:各个分支明确,便于开发、并行、追溯
缺点:分支间切换次数过多,合并次数较多