gitflow工作流是一种依赖于Git版本管理工具,按特定规范对项目开发、测试、上线流程进行管理的工作方式。它是一种为实现规范化管理的约定,它明确了各个分支的意义,使整个团队的分工协作更加和谐明晰。

一、gitflow工作流约定使用的分支简介

  【master】项目的核心分支,也是最终对外发布的分支,唯一且稳定。仅提供可读,不可在该分支上直接修改代码。

  【develop】项目的开发主干分支,唯一。仅提供可读,不可在该分支上直接修改代码。新功能的开发需从该分支拉取新的分支展开。develop分支应该包含项目完整的全部历史记录。

  【featrue】项目的需求开发分支,可多个,从develop分支或其他featrue分支拉取。程序员的多人分工协作即通过featrue来实现,是代码具体实现的一线程序员接触最多的分支。需求开发完成后,要合并回develop分支。

  【release】预发布分支,通常被叫做测试分支,主要用于开发阶段的测试及bug修复。当feature分支开发完毕后会合并回develop分支,然后再从develop分支拉取release分支提测。测试并修复后的release分支要合并回develop分支以及master分支,并打上合适的tag标记(包含必要的releaseNote)。

  【hotfix】紧急线上修复分支,即当对外发布的master分支出现重大bug,影响线上使用时,从master分支拉取hotfix分支进行紧急修复。修复后的hotfix分支要合并回master分支和develop分支。

二、gitflow工作流流程图

  

  下面,以新项目开发或旧项目转gitflow模式的场景来介绍gitflow工作流的运作。

  首先,完成中央仓库的初始化,将新项目搭建起框架后的工程代码或要转gitflow的项目代码上传至git中央仓库。项目负责人克隆中央仓库到本地形成master分支,并拉取develop分支(步骤①)推送至服务器。一般的实际场景,开发团队中只有项目负责人有权限操作master分支,拉取develop分支,并将develop分支的代码合并到master分支中。

  然后,开发团队中的其他人克隆中央仓库的develop分支到本地,形成全体成员统一的唯一的develop分支轨迹。之后,按照需求及成员各自的分工,各个成员可以从develop分支拉取出各自的featrue分支(步骤②)进行独立的开发;若涉及到多人合作开发同一分支,拉取的分支要及时推送至服务器,便于各成员共享。

  当各成员完成各自的功能开发后,需将完成后的代码提交到featrue分支,然后合并到develop分支(步骤③)。代码合并后,featrue分支可以不再保留。

  功能累积足够且稳定或到达约定的提测周期时,项目负责人应当从develop分支拉取出release分支(步骤④),打包提交相应的版本给测试人员进行部署测试,测试中提交的bug全部在该release分支完成修改。

  测试结束并完成bug修复后,release分支应该合并回develop分支和master分支(步骤⑤),代码合并后,release分支可以不再保留。合并后的master分支,应由项目负责人及时推送到中央仓库(步骤⑥)。同时全体成员要及时同步自己develop分支。

  有上线需求时,直接从master分支打包提交应用版本进行部署。当线上版本出现重大bug,项目负责人需从master分支拉取hotfix分支(步骤⑦),进行线上的紧急修复。

  最后,修复后的hotfix分支要合并回develop分支和master分支(步骤⑧)。并推送到中央仓库(步骤⑨)。

三、开发分支内部开发者们的合作模式

  

  在gitflow工作流中,此处的公共服务器可以理解为develop分支,主开发者掌握featrue分支的读写权限,其他开发者拉取副本后,各自独立开发,完成后将更新的patch提交给主开发者。最终由主开发者统一完成featrue分支的提交与合并。

参考文献:(文章仅做交流学习,侵权即删!!)

1、https://www.jianshu.com/p/cb96825ff89e

2、https://segmentfault.com/a/1190000002918123?utm_source=tag-newest

3、https://www.jianshu.com/p/9a76e9aa9534

4、https://www.cnblogs.com/Ant-soldier/p/6106777.html

gitflow工作流简介的更多相关文章

  1. Gitflow 工作流简介

    Gitflow工作流简介 Gitflow工作流通过为功能开发.发布准备和项目维护分配独立的分支,让发布迭代过程更流畅. Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提 ...

  2. Git基本命令和GitFlow工作流

    本篇博客讲解了git的一些基本的团队协作命令,和GitFlow工作流指南 git 团队协作的一些命令 1.开分支 git branch 新分支名 例如,在master分支下,新开一个开发分支: git ...

  3. Gitflow工作流

    什么是Gitflow工作流 Gitflow工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. Gitflow工作流没有用超出功能分 ...

  4. Git工作流指南:Gitflow工作流

    git工作流 1.Git flow 核心分支:master,dev 可能还会有:功能分支,bug修复分支,预发布分支 2.github flow:只一个长期分支,就是master 第一步:根据需求,从 ...

  5. GitFlow 工作流

    1.概述 GitFlow 工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. GitFlow 工作流没有用超出功能分支工作流的概念 ...

  6. Git 工作流简介

    1.概述 工作流有各式各样的用法,但也正因此使得在实际工作中如何上手使用增加了难度.这篇指南通过总览公司团队中最常用的几种 Git 工作流让大家可以上手使用. 在阅读的过程中请记住,本文中的几种工作流 ...

  7. Git之GitFlow工作流

    一. GitFlow 介绍 1.1 什么是 GitFlow GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 . 1.2 GitFlow 常用分支说明 分支名称 分支说明 P ...

  8. java:activiti(工作流简介 )

    1.工作流:(workflow) 整个工作的流程 eg:请假工作流 (我)员工-->组长-->经理-->主管-->人事-->总经理(董事会) eg:出差(报账)工作流 ( ...

  9. Git工作流指南:Gitflow工作流 Comparing Workflows

    Comparing Workflows The array of possible workflows can make it hard to know where to begin when imp ...

随机推荐

  1. NT AUTHORITY\IUSR登录失败解决方法

    NT AUTHORITY\IUSR登录失败解决方法 1 今天打开网站时,突然报这个错误,平时都好好的 Cannot open database "aslkm" requested ...

  2. Velocity根据模版生成静态html

    新公司的一个CMS项目要用到,这里记录下 一.项目文件图 二.springmvc-servlet.xml 添加 <!-- 定义环境变量文件 --> <bean id="pr ...

  3. [CSS Hack]解決IE6、IE7、IE8、Firefox的瀏覽器相容性問題!

    每次調CSS最令人頭痛的就是瀏覽器校正問題,因為每個瀏覽器對CSS的解釋都不太一樣,Firefox本身算是比較照規矩來,處理上比較簡單,但是遇到微軟的IE系列頭就大了,雖然都是IE,但是IE6.IE7 ...

  4. viewpagerindicator+UnderlinePageIndicator+ viewpage切换

    布局文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi ...

  5. Java构造函数中调用构造函数

    在Java中,当为一个类创建了多个构造函数时,有时想在一个构造函数中调用另一个构造函数以减少代码量.这时可以使用this关键字来实现. 通常,当使用this关键字时,它意味着"这个对象&qu ...

  6. css知多少(6)——选择器的优先级(转)

    css知多少(6)——选择器的优先级   1. 引言 上一节<css知多少(5)——选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两 ...

  7. php学习笔记-逻辑运算符

    $a and $b 只有当$a和$b都是true才返回true,否则false. $a or $b 只要$a或者$b至少有一个是true则返回true.意思是或者$a是true,或者是$b是true, ...

  8. Linux expect命令

    一.简介 通过Shell可以实现简单的控制流功能,但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能.而就使用来实现这种功能的工具.Ex ...

  9. 40、inner mate distance for paired reads in a bam file

    参考:https://www.biostars.org/p/106291/#106344 1.inner mate distance : the distance from the right mos ...

  10. NSClassFromString 实例话静态库中的类

    Class myClass = NSClassFromString("StaticLibyClassName"); StaticLibyClassName是从静态库中实例化一个Cl ...