Git Flow是什么?

Git Flow是一套基于git的工作流程,这个工作流程围绕着project的发布(release)定义了一个严格的如何建立分支的模型。

Git建分支是非常cheap的,我们可以任意建立分支,对任意分支再分支,分支开发完后再合并。

比较推荐、多见的做法是特性驱动(Feature Driven)的建立分支法(Feature Branch Workflow)。

简而言之就是每一个特性(feature)的开发并不直接在主干上开发,而是在分支上开发,分支开发完毕后再合并到主干上。

这样做的好处是

还处于半成品状态的feature不会影响到主干

各个开发人员之间做自己的分支,互不干扰

主干永远处于可编译、可运行的状态

GitFlow则在这个基础上更进一步,规定了如何建立、合并分支,如何发布,如何维护历史版本等工作流程。

master和develop分支

master分支只存放历史发布(release)版本的源代码。各个版本通过tag来标记。上图里的v0.1和v0.2就是tag。

develop分支则用来整合各个feature分支。开发中的版本的源代码存放在这里。

feature分支

每一个特性(feature)都必须在自己的分支里开发,feature分支派生自develop分支。

当feature开发完毕后,要合并回develop分支。feature分支永远不会和master分支打交道。

release分支

release分支不是一个放正式发布产品的分支,你可以将它理解为“待发布”分支。

我们用这个分支干所有和发布有关的事情,比如:

把这个分支打包给测试人员测试

在这个分支里修复bug

编写发布文档

所以在这个分支里面绝对不会添加新的特性。

当和发布相关的工作都完成后,release分支合并回develop和master分支。

单独搞一个release分支的好处是,当一个团队在做发布相关的工作时,另一个团队则可以接着开发下一版本的东西。

hotfix分支

一个项目发布后或多或少肯定会有一些bug存在,而bug的修复工作并不适合在develop上做,这是因为

develop分支上包含还未验证过的feature

用户未必需要develop上的feature

develop还不能马上发布,而客户急需这个bug的修复。

这时就需要新建hotfix分支,hotfix分支派生自master分支,仅仅用于修复bug,当bug修复完毕后,马上回归到master分支,然后发布一个新版本,比如v0.1.1。

同时hotfix也要合并回develop分支,这样develop分支就能享受到bug修复的好处了。

配套工具

Git Flow不仅仅是一种规范,还提供了一套方便的工具。大大简化了执行Git Flow的过程。

安装

OSX

$ brew install git-flow

Debian/Ubuntu Linux

$ apt-get install git-flow

Windows(cygwin)

$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

Initialize

对一个git仓库配置一下git flow。主要是一些命名规范,比如feature分支的前缀,hotfix分支的前缀等。一般用默认值就行。

git flow init

Feature

Start a new feature

从develop开启一个新的分支

git flow feature start MYFEATURE

这个命令会从develop分出一个分支,然后切换到这个分支上面。

Finish up a feature

一个feature分支开发完毕后,要做以下事情:

把 MYFEATURE 合并到 develop

把这个分支干掉

切换回develop分支

git flow feature finish FEATURE_NAME

Publish a feature

如果你想让别人和你一起开发MYFEATURE分支,那就把这个分支push到服务器上

git flow feature publish MYFEATURE

Getting a published feature

获得一个别人publish到服务器上的feature分支

git flow feature pull origin MYFEATURE

Release

Start a release

创建一个release分支,派生自develop分支。

git flow release start RELEASE

Publish a release

git flow release publish RELEASE

Finish up a release

一个release分支结束后,需要做以下工作:

把release分支合并回master

给本次发布打tag

同时把release分支合并回develop

干掉release分支

git flow release finish RELEASE

最后不要忘记把tag push到服务器git push --tags

Hotfix

git flow hotfix start

开启一个hotfix分支

git flow hotfix start VERSION

Finish a hotfix

结束一个hotfix分支,和release一样,同时合并回develop和master

git flow hotfix finish VERSION

参考资料

git flow linux,Git Flow简介相关推荐

  1. windows git and linux git lib operater

    windows git ssh生成git ssh key 配置 git clone  use SSH网址 git config --global --list 查看是否已配置 git config - ...

  2. 使用 git 下载linux 源码

    1)进入源码官网 https://www.kernel.org/ 页面如下: 2)主线的git 地址,当点mainline 后面的 "browse "时,如下: 点一下,企鹅右边的 ...

  3. git flow安装与使用 linux,git flow的使用

    git大家都比较熟悉,下面来简单说说git flow.通过几个简单的使用,来比较一下git flow的方便之处.为了演示方便,我现在远程新建一个代码仓库,名字叫做GitflowDemo. 要使用git ...

  4. Git基础概念与Flow流程介绍

    文章目录 Git相关 基本概念 常见客户端 TortoiseGit Sourcetree Intellij Idea 命令行 常用命令 存储区域 命令之 add & commit &p ...

  5. Git的使用——Git 常用命令总结、Git的使用、Git 的分支、远程仓库的使用、IDEA 中使用Git、Git 工作流(Git Flow、Github Flow、GitLab Flow)

    Git的使用--Git 常用命令总结.Git的使用.Git 的分支.远程仓库的使用.IDEA 中使用Git 一.Git 常用命令总结 为了方便后续查找命令,故先把总结放前面,教程放后面 1.git 基 ...

  6. Git学习笔记—Git Flow

    在Java程序开发中的定制开发规范,想要把项目正规高效的跑起来.引入 Git 版本控制,Git-Flow 便成为了首选. 今天动力节点Java学院来带你了解一下. 一.为什么使用 git-flow 当 ...

  7. 干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题)

    干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题) 参考文章: (1)干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题) (2)https: ...

  8. Linux:git、github、gitbash简介

    Git介绍: Git是目前最先进的分布式版本控制系统,gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. shell: 是linux ...

  9. Git合并和变基简介:它们是什么,以及如何使用它们

    by Vali Shah 通过瓦利沙阿 Git合并和Git变基简介:它们做什么以及何时使用它们 (An Introduction to Git Merge and Git Rebase: What T ...

最新文章

  1. linux给普通用户sudo权限
  2. 使用OpenSSH远程管理Linux服务器
  3. 计算机转财经专业考试考什么,高三对口升学第三次模拟考试财经基础课计算机专业课...
  4. python -- join()
  5. (只需挨个复制粘贴命令即可部署)在Centos7下搭建文件服务器(VSFTPD)
  6. shell脚本统计httpd进程和子进程占用的CPU、内存大小,要求每隔5s统计一次
  7. Flex走出低谷的关键: 打破Flex固有的定义
  8. bat篇---windows bat启动exe结尾的可执行程序
  9. 数据透视表练习表格_将高级电子表格导出与PHP结合起来以创建数据透视表
  10. 图表有很多,你用对了么?
  11. 81、【backtrader基金策略】如果每周定投一次,在周几定投收益率更高?
  12. 解决力扣等国外网站打不开问题
  13. postman数据保存在哪里_Postman教程——使用数据文件
  14. 百度、华为、京东、B站最新面试题汇集,含泪整理面经
  15. mvp中的m作用_将M放入MVP
  16. 【论文阅读】Scene Text Image Super-Resolution in the Wild
  17. C语言 计算e的近似值
  18. 家装灯线走线图_求一套完整家庭装修电路图和走线图用来学习
  19. Elasticsearch搜索操作
  20. 三维空间中平面的法向量计算

热门文章

  1. js 数组转json和json转数组
  2. 【1、雅思听力】何琼口语学习记录 第一节
  3. SDL2 显示视频并在视频上显示文字
  4. input 输入框 propertychange和input事件
  5. win8.1不支持交行满金宝的解决方法
  6. MFC打开文件夹选择对话框
  7. mac查看cpu核数
  8. 在Python中复制和重命名文件
  9. 微信小程序免费视频+精品教程合集+demo合集(长期更新,推荐收藏)
  10. Python2.7获取QQ空间全部好友