zoukankan      html  css  js  c++  java
  • 我与Git的那些破事(下)--分支模型

    在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结。然而,最近读了Vincent Driessen写的一篇文章,觉得他总结的太好了,站在他肩膀上忍不住将自己的理解分享出来。Vincent Driessen的文章连接放在本文最下方,有需要的童鞋可去参考一二。

    话不多上,干货顶上。

    分支模型

    上述这张图便是一张完整的分支模型。乍看上去,似乎有点复杂,其实理解后非常简单,并且十分经典。如果你所在项目代码管理较为混乱,我相信,该模型会对你有所帮助。

    主要分支

    对于完整的项目来讲,有两个主要分支,它们的生命周期与项目等同,即一直会存在:

    • master分支
    • develop分支

    master:我相信,每个git用户都非常熟悉该分支,没错,这是创建项目时的默认分支。对于该模型,我们认为master分支上任何一个点,都是一个稳定的版本,可以直接部署至产线环境。

    develop:这是master的平行分支,也是项目中持续开发的分支。该分支的HEAD始终反应着下一个版本的最新修改。所有的feature分支代码都往这里合入。通常,自动化测试环境都由该分支构建。

    当develop分支合入了所有需求分支的代码(下个发布版本所需的功能)并且稳定时,将develop代码合入到master分支,并打上版本tag(方便以后版本回溯)。

    实际项目中,我们一般不直接从develop分支将代码合入至master分支,而是从develop拉出release分支,从release分支合入master分支。详情往下观看。

    次要分支

    除了master和develop分支,开发模型中还需要其他分支来协同开发,其生命周期各不相同,但最终都会被删除。

    • feature分支
    • release分支
    • hotfix分支

    feature分支

    当开发团队接到一个新的需求,从develop分支拉出一个feature分支,该功能相关代码均在该分支开发。

    当该分支开发完毕,将分支代码合入develop分支;

    远端删除该feature分支,当然开发本地可保留该分支一段时间,防止出现乌龙事件。

    本地创建一个feature分支:

    #从本地develop分支拉出feature1分支
    git checkout -b feature1 develop
    #从远端develop分支拉出feature1分支
    git checkout -b feature1 origin/develop

    将本地分支上传到远端:

    #将本地新建feature1分支上传到远端,并在远端命名为feature1
    git push origin feature1:feature1
    #将本地新建feature1分支上传到远端,并在远端命名为feature2
    git push origin feature1:feature2  

    查询分支

    #查询本地分支
    git branch
    #查询远端分支
    git branch -r
    #查询所有分支
    git branch -a

    本地切换分支

    #切换到develop分支
    git checkout develop

    本地删除分支

    #删除本地分支feature1
    git branch -d feature1
    #强制删除本地分支feature1
    git branch -D feature1
    #删除远程分支feature1
    git push origin :feature1 

    release分支 

    当develop分支达到一个稳定点,从develop分支从拉出release分支,将其打包并部署到环境中,进行系统测试。

    如果测试过程中,出现bug,在release分支进行bug修复,然后出包再次测试;

    该bug确认修复后,将代码合入develop分支;

    所有测试通过后,将代码合入master分支,并在master分支打tag(一般对应版本号)。

    本地分支打tag

    #切换master分支
    git checkout master
    #本地分支打tag
    git tag -a 2.0.0 -m 'comments'
    #本地tag上传至远端
    git push --tags

    本地删除tag

    #本地删除tag 2.0.0
    git tag -d 2.0.0
    #删除远端tag 2.0.0
    git push origin :refs/tags/2.0.0

    当发布完成后,我们可以将远端的release分支删除,当然可以保留本地release分支一段时间,防止乌龙事件。

    hotfix分支

    当已发布的版本,在运行一段时间后,由于偶然等因素造成bug,需紧急修复,此时从master分支拉出hotfix分支进行bug修复。

    当bug修复完成后,将代码分别合入develop分支和master分支。

    合入master分支后,在master打上新的tag(一般是小版本号)。

    新版本上线后,远端hotfix分支可以删除,本地hotfix分支可以保留一段时间,防止乌龙事件。

    上述内容看完,再回过头来看最初的分支模型,是否觉得so easy呢~

    再次感谢vincent Driessen,本文多处图片均是参考该篇blog而绘制:A successful Git branching model


    作者:吴家二少

    博客地址:https://www.cnblogs.com/cloudman-open/

    本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

  • 相关阅读:
    Python的招牌花旦
    Python的for循环究竟是什么回事儿
    人人都喜欢用的十大python标准库
    有编程基础学python怎么赚点小钱?
    python3 Flask Redis 如何切换数据库
    贪心算法
    【ACM】nyoj_106_背包问题_201308152026
    【ACM】nyoj_14_会场安排问题_201308151955
    【ACM】nyoj_132_最长回文子串_201308151713
    【ACM】nyoj_47_过桥问题_201308151616
  • 原文地址:https://www.cnblogs.com/cloudman-open/p/12207568.html
Copyright © 2011-2022 走看看