Git flow 出自 A successful Git branching model,这里使用了一个前端项目配合本文稿实施了 git flow 并记录流程作出示例和参考,对 hotfix 与持续部署略有提及,本意是用作公司内部的技术安利。
所用源码及文档本身见于 github jusfr/HelloGitflow

前言

Gitflow 是一种 git 分支管理工具——说是思想也不为过,它使用既定策略区分和管理开发、测试、生产环境的代码版本,对测试与持续集成友好,与敏捷、迭代的思路一致。

1 准备工作

1.1 创建空白目录

mkdir HelloGitflow
cd HelloGitflow

1.2 开始当前目录工作,示例创建和保存一个 index.html

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div></div>
</body>
</html>
git add index.html
git commit -m "init commit"

2 Git flow init

git flow init

这里使用了默认配置,一路 next

3 一个完整的开发周期

3.1 任务拆解,示例添加了分支 about 和 navigation

git flow feature start about
git flow feature start navigation

任务拆解相当于 story 认领,实际开发中的步骤更加繁冗。

3.2.1 about 分支创建了一个 about.html

git checkout feature/about
# more work to do
git add about.html
git commit -m "add about.html"

3.2.2 navigation 分支创建了一个 nav.html

git checkout feature/navigation
# more work to do
git add nav.html
git commit -m "add nav.html"

3.3 开始合并分支

3.3.1 合并 about

git flow feature finish about

3.3.2 合并 navigation,存在 merge 过程

git flow feature finish navigation

3.4 版本发布

3.4.1 当 feature 积累数量达到可以进行版本发布时,开始进行 release 发布

git flow release start v0.1

3.4.2 部分内容需要修改,在这里为各页面添加了 title

git add index.html about.html nav.html
git commit -m "add title for each page"

3.4.3 结束当前 release 分支

# git push
git flow release finish v0.1

4 连续的开发周期

我们开始在远程分支上工作,可以在结束分支前先将其 push 到远程分支上避免未在本地保留的情况

git remote add github https://github.com/jusfr/HelloGitflow.git
git push github --all

虽然开出来很多分支,但是可以观察到 master 和合并了两次,且分别被标记为 v0.1 和 v0.2

不考虑测试等情况,标记 v0.1 和 v0.2 的 master 版本或者 release/v0.1 和 release/v0.2 都是可以部署的版本。

5 线上的 bug 修复

现在已经在 v0.2 基础上进行 account 和 react 的分支开发,但是发现线上的 v0.2 版本需要立即修复的问题,分支状态

开启 hotfix/v0.2.1 来修复这个问题

bash git flow hotfix start v0.2.1

在 hotfix/v0.2.1 的视角来看,它是从最近的 mater 分支checkout 下来的,所以对正在进行的 account 和 react 无影响

以全局视角来看,hotfix/v0.2.1 与 account 和 react 确实没有交集

现在问题修复,合并 hotfix/v0.2.1

bash git flow hotfix finish 'v0.2.1'

当然仍然可以先 push 到远程分支,可以看到进行了若干步操作

  1. 合并 hotfix/v0.2.1 到 master 分支,master 分支被打上 v0.2.1 的 tag
  2. 合并 master 到 develop 分支。

在第2步中,如果 develop 有过变更,比如有过 feature 合并,那么可能存在冲突需要解决

在此示例中, master 分别被打上了 v0.1, v0.2, v0.2.1 标记,这对基于 master 的持续部署非常友好:可以快速在这些版本中部署与回滚,而不用关心存在多少变更与分支等等。

从一个前端项目实践 Git flow 的流程与参考的更多相关文章

  1. Git flow 的流程

    Git flow 的流程与参考   Git flow 出自 A successful Git branching model,这里使用了一个前端项目配合本文稿实施了 git flow 并记录流程作出示 ...

  2. [front]有效开展一个前端项目

    今天的前端如果没有用到 npm,效率是比较低的:所以要从使用的工具来讲. 1. 一切都依赖于 nodejs: 下载一个 linux 的源码包就可以开始安装了. $ wget https://nodej ...

  3. 使用gulp来构建一个前端项目

    什么是gulp? gulp是一个前端项目构建工具,是自动化项目的构建利器,它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成.你可以使用gulp及其插件对你的项目代码 ...

  4. [FE] 有效开展一个前端项目2 (vuejs-templates/webpack)

      1.安装 nodejs.npm $ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - $ sudo apt-get i ...

  5. [FE] 有效开展一个前端项目1

    今天的前端如果没有用到 npm,效率是比较低的:所以要从使用的工具来讲. 1. 一切都依赖于 nodejs: 下载一个 linux 的源码包就可以开始安装了. $ wget https://nodej ...

  6. vsCode怎么为一个前端项目配置ts的运行环境

    vsCode为一个前端项目配置ts的运行环境,ts文件保存的时候自动编译成js文件: 假设此前端项目名称为Web:文件结构如图 1. 在根目录中新建一个“.vscode”文件夹,里面建一个“tasks ...

  7. git flow 工作流程以及常用命令

    一.分支介绍 master 也是产品分支,只有一个,一般情况下不会在这个分支上进行代码操作 develop 只有一个,新特性的开发是基于 develop 开发的,但是不能直接在 develop 上进行 ...

  8. webpack(构建一个前端项目)详解--升级

    升级一个正式的项目结构 分离webpack.config.js文件: 新建一个webpack.config.base.js任何环境依赖的wbpack //public webpack const pa ...

  9. 第二章-如何使用github建立一个HelloWorld项目,git的add/commit/push/pull/fetch/clone等基本命令用法。--答题人:杨宇杰

    1.配置Git 首先在本地创建ssh 秘钥:在git bash输入: $ ssh-keygen -t rsa -C "your_email@youremail.com" eg:$ ...

随机推荐

  1. 从一个Activity返回上一个Activity

    从一个Activity返回上一个Activity 要求:保留上一个Activity的数据 方法: 第一步:从Activity1转向Activity2时,用startActivityForResult而 ...

  2. python 字典列表排序operator.itemgetter()

    举例: import operator x = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}] sorted_x = sorted(x, ...

  3. 【BZOJ】【1874】取石子游戏

    SG函数 嗯博弈论入门题,关于SG函数这个东西可以去看VFK神犇的博客,讲的非常清楚Orz. 传送门:vfleaking.blog.163.com/blog/static/17480763420123 ...

  4. 搜索 基础 AC 2014-01-14 15:53 170人阅读 评论(0) 收藏

    题目网址:http://haut.openjudge.cn/xiyoulianxi1/1/ 1:晶矿的个数 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 ...

  5. map初始化定时器

    init_timer(); //各种定时器的初始化 void Map::init_timer() { //auto tf = GetPlug(TimerFactory); auto tf = m_sp ...

  6. wireshark常用的过滤命令

    我们使用wireshark抓包,却不知道如何分析这些包,也无法从海量的包中提取自己需要的数据,下面简单介绍下wireshark的过滤规则. 过滤源ip.目的ip.在wireshark的过滤规则框Fil ...

  7. HDOJ 1429 胜利大逃亡(续)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  8. 各大公司广泛使用的在线学习算法FTRL详解 - EE_NovRain

    转载请注明本文链接:http://www.cnblogs.com/EE-NovRain/p/3810737.html 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression ...

  9. myeclipse 10的破解以及运行run.bat错误或者双击立即消失的问题

    安装包下载: ed2k://|file|[myeclipse.10.0.更新发布].myeclipse-10.0-offline-installer-windows.exe|947752488|73b ...

  10. 二维码(支持arc,苹果自带扫描,zbar扫描,二维码生成)

    下载地址:http://pan.baidu.com/s/1mgvJzyo