Git Flow

作者: lihongyan | 来源:发表于2018-05-14 15:27 被阅读0次

    介绍

    git 最强大的就是其分支功能,但是如何使用分支才能更有效的提高开发效率,减少因为代码合并代码的问题。需要一个分支模型来规范,在git-flow出现之前,已经有分支模型理论。你只需要了解,那些工作流程是由哪些单独的任务所组成的,并且附带上正确的参数,以及在一个正确的顺序下简单执行那些对应的git命令就可以了。在git-flow出现之后,你就不需要把这些命令和顺序都记在脑子里。git-flow将一部分操作流程简化为命令,并没有增加新的功能,只是简化了操作,


    安装

    目前最流行的git-flow就是avh版本的git-flow

    mac

    brew install git-flow-avh


    使用

    初始化项目

    # 使用git flow init 代替git init
    
    $ git flow init
    

    使用git flow初始化工程目录之后,默认创建两个分支

    • master分支:保护性分支,只能用来包括产品代码,只包含经过彻底测试的稳定代码。开发人员不能直接工作在master分支上,也不能提交改动到master分支上

    • develop分支:develop分支是进行任何新开发的基础分支。当需要开发一个新功能时,需要创建feature分支,而这个feature分支必须是从develop分支分出去的。另外,该分支也汇集所有已经完成的功能,并等待被整合到master分支中。

              image

    master分支和develop分支也被称为长期分支,它们会存活在项目的整个生命周期中。而其他分支,仅仅是临时存在的,当它们完成了自己的任务之后就会被删除掉。

    功能开发(feature分支)

    创建feature

    • feature分支:feature分支是平常开发工作中使用最频繁的分支。该分支默认从develop检出,在做功能性开发的时候,检出一个独立的分支,是版本控制中一个重要的原则
    # git-flow 创建 feature 分支
    
    $ git flow feature start <branch-name>
    

    当你需要帮助的时候,可以随时请求帮助。例如:

    $ git flow feature help
    

    完成feature

    git flow feature finish
    

    该命令会把当前分支的代码整合到develop分支中去,之后,git-flow会进行清理操作,删除当下完成的功能分支,将分支切换到develop

    版本管理(release分支)

    创建release

    创建release分支

    $ git flow release start 1.1.5
    
    Switched to a new branch 'release/1.1.5'
    

    当你认为现在的develop分支中的代码已经是一个成熟的release版本的时候,这意味着:首先它包括所有新的功能和必要的修复;其二,它已经被彻底的测试过了。如果上述两点都满足,那就可以创建release分支了。release分支是使用版本号命名的,这个命名方案会让git-flow在我们完成release后,适当的自动去标记那些release提交。

    完成release

    使用如下命令完成release分支

    git flow release finish 1.1.5
    

    该命令会完成如下一系列操作:

    1. 首先,git-flow会拉去远程仓库,以确保目前是最新的release版本
    2. 然后,release的内容会被合并到master分支和develop分支,这样不仅产品分支(master分支)的代码是最新的版本,功能分支也会基于最新代码
    3. 最后,版本分支会被删除,并且回到develop分支

    为了便于识别和做历史参考,release提交会被标记上这个release的名字

    紧急修复(hotfix分支)

    很多时候,仅仅在几个小时或几天之后,master分支中的代码可能就会出现一些问题。在这种情况下,git-flow提供了一个特定的hotfix分支

    创建hotfix

    $ git flow hotfix start missing-link
    

    这个命令会创建一个名为hotfix/missing-link的分支。因为这是对产品代码进行修复,所以这个hotfix分支是基于master分支。

    hotfix分支这和release分支最明显的区别:release分支都是基于develop分支的;而hotfix分支是基于master分支的。

    完成hotfix

    在把我们的修复提交到hotfix分支,并测试通过之后,就可以去结束它了:

    git flow hotfix finish missing-link
    

    该命令会完成如下一系列操作:

    1. 首先,完成的改动被合并到master分支中,同时也会合并到develop分支中,这样就可以确保这个错误不会再次出现在下一个release分支中
    2. 然后,这个hotfix分支将被标记起来以便参考
    3. 最后,这个hotfix分支将被删除,然后切换到develop分支上

    整个流程

                   image

    相关文章

      网友评论

        本文标题:Git Flow

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