Gitflow工作流

作者: vincentgemini | 来源:发表于2017-09-20 17:27 被阅读87次

    前言

    最近换了一个新公司,因为之前做过几年的开发,也有过一定的管理经验,所以公司很器重,也希望自己能改善公司iOS团队的现状。
    既然有这样的机会,自己当然要好好把握了。这也许是自己面向真正管理的第一步吧。
    因为公司团队比较年轻,为了以后可以更好的管理团队,首先制定了代码规范。后来,发现公司代码管理也不是很好,于是就参考市面代码管理方案,写了下面的总结。

    背景

    目前市面管理代码的工具主要有SVN和Git两种,而Git以分布式管理最终受到广大程序员的喜爱。
    主流的Git工作流有3种:
    1. 集中式工作流,类似传统的SVN,没有很好的发挥Git的功效;
    2. 功能分支工作流,在master分支上创建功能分支,在功能分支上开发新需求,开发完毕后,合并到master分支;这种工作流方式适合小团队的开发,如果是大的团队,这种方式会有一些小麻烦,于是有了下一个工作流;
    3. Gitflow工作流,本文也主要介绍此工作流;

    下面是一张Gitflow工作流的示意图:

    Gitflow工作流.png

    工作方式

    Gitflow工作流主要有两个分支,master和develop分支,所有的操作都围绕着两个分支来做的,这两个分支代表了研发过程中的两个重要环节:发版和开发。master是一个随时可以发版的分支,而develop是一个随时可以开发新功能的分支。接下来,配合SourceTree工具详细说明一下Gitflow在不同的阶段是如何工作的。

    初始化

    首先将远程代码仓库clone到本地,打开SourceTree,在右上角有一个Git Flow的按钮,单击后如图:

    初始化

    建议不做任何修改,直接OK。SourceTree会自动化进行一些操作,最明显的变化是多了一个develop分支。

    Workspace

    将新建的develop分支推送到远端仓库。从此,代码库里就存在了两个永久性的分支:master和develop,未来所有的开发工作都围绕这两个分支进行派生跟合并。这两个分支也被称为“历史性”分支。

    流程图

    新功能开发:创建feature分支,合并feature分支

    当进入开发阶段,需要开发新功能时,需要先创建一个新的分支,注意,这个分支使用develop分支作为父分支,当新功能完成后合并到develop分支,新功能提交不应该直接与master分支交互。

    流程图

    使用SourceTree可以很方便完成这一过程,初始化结束后,再次单击GitFlow按钮,如图,选择New Feature,然后输入分支名称。

    创建feature分支1 创建feature分支2

    当新功能开发完成后,需要合并分支到develop分支,这时单击GitFlow按钮,选择Finish Current按钮,使用默认设置,单击OK。

    合并feature分支1 合并feature分支2

    提测阶段:创建release分支,合并release分支

    当开发进入到测试阶段时,需要给测试人员提供测试包,此时需要在develop创建release分支,测试阶段出现的bug,在release分支上进行修改,测试通过后,将release分支合并到develop和master分支。

    示意图

    使用SourceTree实现这一过程,继续单击GitFlow按钮,如图,选择New Release,然后输入分支名,单击OK。

    创建release分支1 创建release分支2

    测试结束后,合并release分支,继续单击GitFlow按钮,选择Finish Current按钮,使用默认设置,然后输入Tag名,单击OK。

    合并release分支1 合并release分支2

    确认没有冲突后,将本地推送到远程仓库。

    线上维护:创建hotfix分支,合并hotfix分支

    当产品通过测试后,就会发版上线。可能会遇到一个紧急问题需要解决。这时需要创建hotfix分支了,需要注意,hotfix分支是唯一从master分支fork出来的分支。修复完后,需要立即合并到master分支和develop分支,master分支应该用新的版本号打好tag。

    示意图

    使用SourceTree完成这一过程步骤,继续单击GitFlow按钮,如图,选择New Hotfix按钮,输入分支名称。

    创建hotfix分支1 创建hotfix分支2

    修改,测试,都需要在这个分支上完成。当测试通过后,合并分支,继续单击GitFlow按钮,如图,选择Finish Current按钮,输入tag名称,选择OK。

    合并hotfix分支1 合并hotfix分支2

    确定没有冲突后,将修改推送到远端仓库。

    Git网络图如下:

    Git网络图

    至此一个完整的开发周期结束,当然上面仅仅模拟了一个简单开发周期,真正的开发一定会比较复杂,但只要按照这个流程管理代码,再复杂的开发情况,也不会出现问题。

    唯一需要注意的时候,在合并代码时会出现冲突,一定要先解决冲突后再推送到远端仓库。

    唯一需要注意的时候,在合并代码时会出现冲突,一定要先解决冲突后再推送到远端仓库。

    唯一需要注意的时候,在合并代码时会出现冲突,一定要先解决冲突后再推送到远端仓库。

    重要的事情说三遍。

    如果你是喜欢终端开发的,Gitflow也提供了相应的工具。无论是GUI还是终端,Gitflow提供的是一套完善的代码管理流程,只要理解了这个流程,使用什么都可以飞。

    参考:
    Git版本控制与工作流
    Git工作流指南:Gitflow工作流

    end

    相关文章

      网友评论

        本文标题:Gitflow工作流

        本文链接:https://www.haomeiwen.com/subject/phhosxtx.html