什么是Git Flow?
就是给项目开发一个新功能需要哪几步。
1.创建新的功能分支。
2.逐渐实现功能,做成一个一个的新版本。
3.发起merge request。
4.大家一起来看看这些代码怎么样,就是code review。
5.大家感觉没问题了,把功能分支合并到master分支,并删除功能分支。
按照这个流程下来,就是标准的git flow。
具体操作
开发人员迁出代码库, 对git flow进行初始化操作:
git flow init
默认配置即可.
1. 开发人员在进行项目功能迭代开发时,首先在本地代码库执行以下命令:
git flow feature start [feature name]
git flow 将自动为您基于develop创建feature/[feature name]分支,
并自动切换到该分支, 您的功能开发将在此分支上进行.
2. 分支创建完成后将当期分支推送到gitlab:
git flow feature publish [feature name]
如果多人协同进行同一个feature开发, 其他参与着可以更新代码库并切换到该分支, 提交代码.
开发人员在本地feature分支开发时, 如果跨时过长, 为避免出现提交的代码发生合并时冲突的情况, 需不定时合并develop分支代码到feature分支, 我们建议使用以下命令进行合并:
git rebase develop
这样可以保持branch commit history非常干净, 不会出现不必要的merge commit信息, 如果在rebase过程中出现冲突, 执行以下命令:
git mergetool
手动合并代码解决冲突, 该命令需要预先设置合并工具(如果设置合并工具请自行google).
解决冲突后, 执行以下命令:
git rebase –-continue
继续继续rebase, 直到完成.
3. 功能代码开发完成后, 开发人员提交代码到feature/[feature name] 分支,
并登陆gitlab 创建一个merge request,
申请将该feature分支合并到develop,
master将对本次请求进行代码评审,
评审通过后可以直接将代码合并。
待发布版本bug修复及版本发布
当本次迭代代码开发完成并准备UAT阶段测试时, 如果发现存在bug, 可以执行以下流程.
1.开发人员开发完成后, master创建预发布版本
git flow release start [Version No.]
git flow release publish [Version No.]
登录gitlab将该分支设置为受保护分支
2.开发人员更新代码, 切换到该release分支
git pull
git checkout release/[Version No.]
3.执行以下命令:
git checkout -b fixbug-[Version No.]/[bug name]
git push –u origin fixbug-[Version No.]/[bug name]
创建fixbug分支
修复bug并提交代码后, 申请merge request 到release/[Version No.]
4.master处理merge之后, 测试人员再次进行测试, 无误后, 在本地更新代码, 执行:
git flow finish [release name]
完成release分支, 将自动合并release代码到master/develop,自动创建tag, 自动删除本地release分支
5.新建的tag即完成测试的预发布版本
6.示例:
// master
git checkout develop;git pull
git flow release start v0.1
git flow release publish v0.1
// developer
git checkout release/v0.1
git checkout –b fixbug-v0.1/bug-1121
// todo fix bug…
git push –u origin fixbug-v0.1/bug-1121
// create merge request to release/v0.1
// master
// merge request
git pull
git flow release finish v0.1
Hotfix开发及发布
当线上代码出现不预期bug,并且需要紧急时, 执行以下流程:
1.master创建hotfix分支
git flow hotfix start [hotfix version No.] [release version No.]
git flow hotfix publish [hotfix version No.]
2.开发人员更新代码, 切换到该hotfix分支
git pull
git checkout hotfix/[hotfix version No.]
3.执行以下命令:
git checkout –b hotfixbug-[hotfix version No.]/[bug name]
git push –u origin hotfixbug-[hotfix version No.]/[bug name]
创建hotfixbug修复分支
修复代码并提交到gitlab, 申请merge request 到hotfix/[hotfix version No.]
4.master处理merge后, 测试人员跟进测试, 无误后, 在本地更新代码, 执行:
git flow hotfix finish [hotfix version No.]
完成hotfix, 自动将hotfix分支合并回develop,master分支, 自动创建tag, 自动删除本地hotfix分支
5.新建的tag即为可发布的版本
6.示例:
// master
git flow hotfix start v0.1.1 v0.1
git flow hotfix publish v0.1.1
// developer
git pull
git checkout hotfix/v0.1.1
git checkout –v hotfixbug-v0.1.1/bug-1121
// todo fix bug
git push –u origin hotfixbug-v0.1.1/bug-1121
// create merge request to hotfix/v0.1.1
// master
// merge request
git pull
git flow hotfix finish v0.1.1