一、 Git Flow 工作模型的原理

无规矩不成方圆,但是规矩太多了,则感觉到束缚。我们一个人工作的时候喜欢无拘无束,想怎么干就怎么干,没有人评判,没有人检验。时间久了就会盲目自大,以为增删改查熟悉业务就能够搞定一些。但是当项目逐渐扩大,原来的灵活逐渐变成了混乱,原来的快速迭代因为过于随意的代码,而开发进度迟迟不前。掌握一种规范,便在处理类似问题的时候有章可循,也能够快速的融入一个团队。另外所谓规范,可以说是比较好的实践,按照规范来,项目也能稳健的发展。

Git Flow 就是如何使用git 分支的一种规范,或者叫做推荐。

根据Git Flow 的推荐,我们要将Git 的分支分为 master 、develop 、hotfix 、releasefeature这五个分支。各种分支分别负责不同的功能,平时开发的时候各司其职,因此会有比较小的冲突率。那么可以用这些减少冲突的时间,少加会班,多有点自己的生活岂不快哉。一图胜千言:

master 分支

master 分支主要方稳定、随时可上线的版本。这个分支只能从别的分支上合并过来,一般来讲,从develop 上合并,或者从bugfix 分支上合并过来。不能直接在master 分支上进行commit文件。因为是稳定的版本,所以每次版本发布都要在这个分支上添加标签(tag)。

develop 分支

develop 分支是所有开发分支的母体,所有的开发分支都要从develop上切出来,开发完成之后最后都要合并到develop上。

hotfix 分支

hotfix 分支用来修复生产中的紧急bug,由于develop分支尚处于开发过程中,代码不稳定,不能直接应用于生产。所以从master分支上切出一个分支,修复完成之后合并到master分支,并且合并到develop上。

release 分支

release 分支可以称之为预发布的版本。当我们认为develop版本的代码已经趋于成熟,我们可以打一个release分支。在release 分支上测试完成之后,要将代码合并到master分支和develop上。master 分支是线上版本,而合并到develop版本是因为,在测试过程中,一些细节的东西可能会修改,因此这些优化的内容也应该合并到最终版本以及开发版本中。

feature 分支

feature 分支是最经常使用的分支了。当我们收到一个新的开发功能时,应该在develop分支上切出一个feature分支。用来完成新功能的开发,开发完成之后,要合并进develop分支上。

二、 Git Flow 工具的使用

基本上各种git的客户端软件都会支持Git Flow 工作模型。sourcetree 上使用git flow 工作模型就很流畅,体验很好。但是为了全平台上通用,以及理解原理,快速上手。我们来学习下Git Flow 的命令行操作。

git flow 是一种git的使用规范,当然也有相应的工具集,命令行命令让我们使用。

1、起步

安装git flow

brew install git-flow-avh

初始化git flow 工具库

git flow init
之后都按照默认的去配置,直接按enter键继续。

2、feature 分支操作

增加feature新特性分支

适用场景,需要开发新功能

git flow feature start your roverliang/addlist

示例:

roverliang$ git flow feature start roverliang/addlist
Switched to a new branch 'feature/roverliang/addlist'Summary of actions:
- A new branch 'feature/roverliang/addlist' was created, based on 'develop'
- You are now on branch 'feature/roverliang/addlist'Now, start committing on your feature. When done, use:git flow feature finish roverliang/addlistroverliang$ git branchdevelop
* feature/roverliang/addlistmaster

完成新特性
这个动作执行的是下面的流程:

  • ☆ 合并 addlist 分支到 develop
  • ☆ 删除这个新特性分支
  • ☆ 切换回 develop 分支
git flow feature finish roverliang/addlist

示例:

roverliang$ git flow feature finish roverliang/addlist
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
Already up to date.
Deleted branch feature/roverliang/addlist (was 2e1b475).Summary of actions:
- The feature branch 'feature/roverliang/addlist' was merged into 'develop'
- Feature branch 'feature/roverliang/addlist' has been locally deleted
- You are now on branch 'develop'roverliang$ git branch
* developmaster
roverliang$

获取一个发布的新特性的分支

git flow feature track origin MYFEATURE

3、release 分支操作

准备release 版本

git flow release start RELEASE [BASE]你可以选择提供一个 [BASE]参数,即提交记录的 sha-1 hash 值,来开启动 release 分支. 这个提交记录的 sha-1 hash 值必须是'develop' 分支下的。

示例:

roverliang$ git branchdevelopfeature/test
* master
roverliang$ git log --pretty=oneline -3
2e1b475f9825275aefa0892cfe5259aaac9a3483 (HEAD -> master, origin/test2, origin/master, origin/feature/test, origin/develop, feature/test, develop) delte some content
2d22f306d2dca363b8aaa05743be342a505aabb0        renamed:    demo.txt -> test.txt
fbf025e210952c3cdb10e219c4ee5f82b9f36327        modified:   demo.txt
roverliang$

发布release 版本

git flow release track RELEASE

完成release 版本

相当于执行以下几个动作:

  • ☆ 归并 release 分支到 'master' 分支
  • ☆ 用 release 分支名打 Tag
  • ☆ 归并 release 分支到 'develop'
  • ☆ 移除 release 分支
git flow release finish RELEASE

3、bugfix 分支操作

紧急修复的需求:

  • ☆ 紧急修复来自这样的需求:生产环境的版本处于一个不预期状态,需要立即修正。
  • ☆ 有可能是需要修正 master 分支上某个 TAG 标记的生产版本。

开始紧急修复,开启hotfix 分支

git flow hotfix start VERSION [BASENAME]VERSION 参数标记着修正版本。你可以从 [BASENAME]开始,[BASENAME]为finish release时填写的版本号

完成紧急修复

当完成紧急修复分支,代码归并回 develop 和 master 分支。相应地,master 分支打上修正版本的 TAG。

git flow hotfix finish VERSION

本文参考:

  • git-flow 备忘清单
  • Git Flow 是什麼?為什麼需要這種東西?

Git Flow 工作模型与使用相关推荐

  1. Git Flow 工作流程

    引言 编写的目的 -通过规范化的流程,使得产品.开发与测试等各个部门更高效的协同工作. -通过规范化的流程使得产品高效稳定运行. 背景 在多组员,多项目等环境进行协同工作时,如果没有统一规范.统一流程 ...

  2. Git Flow工作流图

  3. 基于SourceTree 下的 Git Flow 模型

    基于SourceTree 下的 Git Flow 模型 1. sourceTree  是一个开源的git 图形管理工具,可下载mac版本,windows版本 2. Git Flow 是一套使用Git进 ...

  4. mac中使用Sourcetree的git flow

    mac中使用Sourcetree的git flow 前言 1.git flow工作流 1.1 什么是git flow 1.2 git flow上的分支 1.2.1 长期分支 1.2.2 短期分支 1. ...

  5. Git Flow 的正确使用姿势

    一.背景: 大多数公司为了可以快速迭代,一般只有两个环境,一个是测试环境,另外一个是线上环境.这个时候问题就来了,如果线上出现bug要如何修复才不会影响当前版本测试.如果多个版本同时迭代开发,如何才能 ...

  6. Git flow概念

    git flow概念 git 作为一个代码管理系统,不可避免的会涉及到多人合作. Git flow是基于git之上的一种软件开发迭代模型.Git flow是使用git进行源代码管理的一套行为规范.简单 ...

  7. 《六》Git Flow

    Git Flow 是一种 Git 工作流,通过为功能开发.发布准备和维护分别设立独立的分支,让发布迭代过程更流畅. 安装 Git Flow: 安装并初始化 Git Flow 后,Git 还是可以像之前 ...

  8. git flow工作流

    git flow工作流 背景: ​ 在团队开发中,因为项目的众多,每个项目也都有不同的分支,往往会造成分支的混乱.比如我最近遇到了这样的情况,因为正在开发一个较为长期的项目,正改到一半,却派出来一个紧 ...

  9. Git Flow 用法

    git flow 工作流程.如下图所示. master 分支 master 分支主要方稳定.随时可上线的版本.这个分支只能从别的分支上合并过来,一般来讲,从develop 上合并,或者从hotfix分 ...

最新文章

  1. [HDU] Tr A
  2. 只做决定的架构师会成为团队的瓶颈!
  3. apt和apt-get的区别?为什么推荐使用apt?RedHat系列(rpm包、包管理工具yum)和Debian系列(deb包、包管理工具apt-get)区别?
  4. 蔡司三坐标_蔡司三坐标测针的安装指南
  5. LightOJ - 1245 Harmonic Number (II) 求同值区间的和
  6. cdn节点人少延迟高_如何正确配置CDN高速缓存,避免越用越慢的尴尬
  7. 怎样让计算机快速开机,怎样设置可以让电脑快速启动开机.doc
  8. keil创建工程没有atmel_如何使用 KEIL 下载 HEX 文件?
  9. 02. Django基础:Django项目结构
  10. Atitit 大脑能够储存多大的数据量
  11. Python数值分析案例01--------四阶龙格库塔法解抛体运动
  12. PyTorch 体验感悟
  13. 修复 Windows 10 设置界面里面混乱的语言翻译
  14. 用LSTM自动生成古诗
  15. vue-amap的使用
  16. 流形上的预积分(下)
  17. SSL-ZYC 最小步数
  18. 微软的拼音输入法可以带声调进行
  19. android 微信评论功能,Android仿微信朋友圈点击评论自动定位到相关行功能.pdf
  20. 机器学习与公共传播、舆情检测的研究总结

热门文章

  1. solr 近实时搜索
  2. 苹果MAC视网膜屏pyautogui的坐标转换
  3. 电子商务网站服务器构建,电子商务网站构建技术及应用研究
  4. 高速公路发展趋势,智慧高速公路解决方案
  5. 2018最新 Vue实战POS系统
  6. 如何将Windows XP SP3改成SP2
  7. 博瑞传播 php,相关博客
  8. Jeff Dean的神话......
  9. EasybossT8“走入”阿联酋
  10. abb880/580驱动程序,zmu程序图纸571/592/792