一、 GitFlow 介绍

1.1 什么是 GitFlow

GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 。

1.2 GitFlow 常用分支说明

分支名称 分支说明
Production 生产分支,即 Master分支。只能从其他分支合并,不能直接修改
Release 发布分支,基于 Develop 分支创建,待发布完成后合并到 Develop 和 Production 分支去
Develop 主开发分支,包含所有要发布到下一个 Release 的代码,该分支主要合并其他分支内容
Feature 新功能分支,基于 Develop 分支创建,开发新功能,待开发完毕合并至 Develop 分支
Hotfix 修复分支,基于 Production 分支创建,待修复完成后合并到 Develop 和 Production 分支去,同时在 Master 上打一个tag

1.3 GitFlow 工作流程

二、GitFlow 实践

2.1 创建 develop 分支

# 创建 develop 分支
git branch develop
# 将 develop 分支推送到远端仓库
git push -u origin develop

2.2 开始新的 Feature

# 通过develop新建feaeure分支
git checkout -b Feature分支名 develop
# 可选,将分支推送到远端仓库
git push -u origin Feature分支名

2.3 编辑 Feature 分支

# 查看状态
git status
# 添加提交内容
git add XXXfile
# 提交
git commit

2.4 完成 Feature 分支

# 拉取远端仓库 develop 分支合并到本地 develop 分支
git pull origin develop
# 切换到 develop 分支
git checkout develop
# 将 Feature 分支合并到 develop 分支
# --no-ff:不使用 fast-forward 方式合并,保留分支的 commit 历史
# --squash:使用 squash 方式合并,把多次分支 commit 历史压缩为一次
git merge --no-ff Feature分支名
# 将分支推送远端仓库
git push origin develop
# 删除 Feature分支
git branch -d Feature分支名

2.5 开始Relase

# 创建 Relase 分支并切换到 Relase 分支上
git checkout -b release-0.1.0 develop

2.6 完成Release

# 切换到 master 分支上
git checkout master
# 合并 release-0.1.0 分支
git merge --no-ff release-0.1.0
# 推送到远端仓库
git push
# 切换到 develop 分支上
git checkout develop
# 合并 release-0.1.0 分支
git merge --no-ff release-0.1.0
# 推送到远端仓库
git push
# 删除 release-0.1.0 分支
git branch -d release-0.1.0

2.7 开始Hotfix

# 创建 hotfix 分支并切换到 hotfix 分支上
git checkout -b hotfix-0.1.1 master

2.8 完成Hotfix

# 切换到 master 分支
git checkout master
# 合并 hotfix-0.1.1 分支
git merge --no-ff hotfix-0.1.1
# 推送到远端仓库
git push
# 切换到 develop 分支
git checkout develop
# 合并 hotfix-0.1.1 分支
git merge --no-ff hotfix-0.1.1
# 推送到远端仓库
git push
# 删除 release-0.1.0 分支
git branch -d hotfix-0.1.1
# 为主分支打上版本标签
git tag -a v0.1.1 master
# 将标签推送到远端仓库
git push --tags

三、 GitFlow 工具推荐

3.1 Git flow script(命令行)

初始化:

git flow init

开始新Feature:

git flow feature start MYFEATURE

Publish一个Feature(也就是push到远程):

git flow feature publish MYFEATURE

获取Publish的Feature:

git flow feature pull origin MYFEATURE

完成一个Feature:

git flow feature finish MYFEATURE

开始一个Release:

git flow release start RELEASE [BASE]

Publish一个Release:

git flow release publish RELEASE

发布Release:

git flow release finish RELEASE
git push --tags

开始一个Hotfix:

git flow hotfix start VERSION [BASENAME]

发布一个Hotfix:

git flow hotfix finish VERSION

3.2 SourceTree (图形化)

Git之GitFlow工作流的更多相关文章

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

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

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

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

  3. 【转】使用git、git-flow与gitlab工作

    转自:http://www.tuicool.com/articles/BZJRj2 使用git.git-flow与gitlab工作 时间 2013-11-02 00:40:39  Axb的自我修养 原 ...

  4. Git版本控制与工作流详解

    这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...

  5. 好代码是管出来的——Git的分支工作流与Pull Request

    上一篇文章介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增.提交进行管理,可以查看提交历史.代码差异等功能.但实际上git有一个重量级 ...

  6. Git - Pull Request工作流

    Pull Requests是Bitbucket上方便开发者之间协作的功能.提供了一个用户友好的Web界面,在集成提交的变更到正式项目前可以对变更进行讨论. 开发者向团队成员通知功能开发已经完成,Pul ...

  7. Gitflow工作流

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

  8. gitflow工作流简介

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

  9. Git的各种工作流

    Git工作流可以理解为团队成员遵守的一种代码管理方案,在Git中有以下几种常见工作流: 集中式工作流 功能开发工作流 Gitflow工作流 Forking工作流 1)集中式工作流 这种工作方式跟svn ...

随机推荐

  1. python wraps的作用

    1.__name__用来显示函数的名称,__doc__用来显示文档字符串也就是("""文档字符串""")这里面的内容 2.首先我们来看不加@ ...

  2. 向现有URL末尾添加查询字符串参数

    向现有URL末尾添加查询字符串参数 xhr.open("get", "example.php?name1=value1&name2=value2", t ...

  3. Logstash 安装及简单实用(同步MySql数据到Elasticsearch)(Windows)

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件 Windows环境: 1.下载logstas ...

  4. 20190723_C的三个小实现

    1. 有一个字符串开头或结尾含有n个空格(“    abcdefgdddd   ”),欲去掉前后的空格,返回一个新的字符串.a) 要求1:请自己定义一个接口(函数),并实现功能:b) 要求2:编写测试 ...

  5. Ubuntu 18.04 下安装pip3及pygame模块

    1.Ubuntu下pip3的安装.升级.卸载 安装pip3 sudo apt-get install python3-pip 升级pip3 sudo pip3 install --upgrade pi ...

  6. 使用Typescript重构axios(九)——异常处理:基础版

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  7. 转:java 看好的一些书

    地址 :  http://www.cnblogs.com/xrq730/p/4994545.html

  8. Kubernetes5-集群上搭建基于redis和docker的留言薄

    一.简介 1.环境依旧是kubernetes之前文章的架构 2.需要docker的镜像 1)php-forntend web 前端镜像 docker.io-kubeguide-guestbook-ph ...

  9. m113

    今天的比赛很有感触,所以来写一下题解: T1可以发现一些规律是:面积扩大的速度显然比周长扩大的速度快,然后就可以枚举周长来看能为成的面积,其实最优的情况一定是六边型的情况,通过手膜我们可以发现对于边长 ...

  10. <深圳千锋学习>day01

    2019.11.11     深圳千锋H5前端学习笔记