【一篇文章就够了】浅谈GitFlow

想真正弄明白其间的奥秘,推荐一篇博客和一个GitHub项目

如果只是想了解,并不想深入,那么读懂这张图就可以了,这是一张非常经典的GitFlow流程图。

GitFlow是在Git的基础之上构建的一个组织软件开发活动的模型,是软件开发使用Git最佳实践,同时也是使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。

书面的东西还有很多,在此就不提了。首先大家需要了解的就是GitFlow为开发生成的几个分支。

GitFlow模型中定义了主分支和辅助分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。

主分支

主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和development分支。

  1. master分支
    master分支顾名思义就是最主要的分支,在这个分支上面应该是随时可供在生产环境中部署的代码,同是也是整个项目的主线。当开发进行到一定程度,都会更新一份新的可部署代码,每一次更新,最好添加对应的版本号标签(TAG)。

  2. develop分支
    develop分支也是字面意思,就是开发的分支,在这分支上面是大家开发的代码。当develop分支上面的代码
    develop分支是保存当前最新开发成果的分支。通常这个分支上的代码也是可进行每日夜间发布的代码已经实现了软件需求说明书中所有的功能,通过了所有的测试后,并且代码已经足够稳定时,就可以将所有的开发成果合并回master分支了。

辅助分支

辅助分支是用于组织解决特定问题的各种软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限的时间范围内存在。

辅助分支包括:用于开发新功能时所使用的feature分支;用于辅助版本发布的release分支;用于修正生产代码中的缺陷的hotfix分支。以上这些分支都有固定的使用目的和分支操作限制。从单纯技术的角度说,这些分支与Git其他分支并没有什么区别,但通过命名,我们定义了使用这些分支的方法。

  1. feature分支

使用规范:可以从develop分支发起feature分支,代码必须合并回develop分支,feature分支的命名可以使用除master、develop、release-、hotfix-之外的任何名称。

feature分支通常是在开发一项新的软件功能的时候使用,这个分支上的代码变更最终合并回develop分支或者干脆被抛弃掉(例如实验性且效果不好的代码变更)。一般而言,feature分支代码可以保存在开发者自己的代码库中而不强制提交到主代码库里。

  1. release分支

使用规范:可以从develop分支派生,必须合并回develop分支和master分支,分支命名惯例:release-*。

release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。

当develop分支上的代码已经包含了所有即将发布的版本中所计划包含的软件功能,并且已通过所有测试时,我们就可以考虑准备创建release分支了。而所有在当前即将发布的版本之外的业务需求一定要确保不能混到release分支之内(避免由此引入一些不可控的系统缺陷)。

成功的派生了release分支,并被赋予版本号之后,develop分支就可以为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本之后发布的版本。版本号的命名可以依据项目定义的版本号命名规则进行。

  1. hotfix分支

使用规范:可以从master分支派生,必须合并回master分支和develop分支,分支命名惯例:hotfix-*。

除了是计划外创建的以外,hotfix分支与release分支十分相似:都可以产生一个新的可供在生产环境部署的软件版本。

当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。

这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作。

SourceTree

SourceTree是GitFlow的可视化工具,适用于git项目管理。如何安装可以参考链接中的博客SourceTree安装与使用

点击克隆/新建

  1. 克隆

如果箭头指向的仓库类型表明“这不是一个标准的Git仓库”,可能是有以下原因
1)项目地址获取错误
2)没有项目访问权限

  1. 新建

如果存在的项目,直接新建一个GitFlow管理项目即可。

获得develop分支

克隆完成后,得到的是发布后的master源码,如果想要获取最新的正在开发中的源码,需要对项目流进行初始化,点击“Git工作流”。

直接点“确定”,获取develop分支源码,开发任务都是在develop分支上完成的。

新建feature

  1. 首先当前开发分支指向develop,点击“Git工作流”。

输入功能名称,点击确定。

  1. 在feature分支下面,开发并提交

  2. 开发完成,合并分支
    完成feature开发后,将feature中的源码合并到develop分支。将当前分支指向F_add_feature分支,点击“Git工作流”,选择“完成功能”。

预览中,表明feature分支将合并到develop,点击确定,进行提交合并,合并成功。

之后如果需要添加功能,重复这几步即可。

新建release分支

与feature分支相似,只不过在git工作流中选择建立新的发布版本

新建hotfix分支

与feature分支相似,只不过在git工作流中选择建立新的修复补丁

参考文献
gitflow的github: https://github.com/nvie/gitflow
githook官方文档:https://www.git-scm.com/book/zh/v2/自定义-Git-Git-钩子
https://www.jianshu.com/p/1d8da713316e
https://blog.csdn.net/u010658879/article/details/50975084
https://www.jianshu.com/p/f3d17c11bb8a
SourceTree的基本使用
https://nvie.com/posts/a-successful-git-branching-model/

原文地址:https://www.cnblogs.com/zllk/p/13713667.html