什么是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