文档章节

git版本控制开发流程小结笔记(二)

何良瑞Nyanko君
 何良瑞Nyanko君
发布于 2014/05/29 12:20
字数 959
阅读 1475
收藏 20

接前篇git版本控制开发流程小结笔记(一),我们接着展示其他的开发流程。

4. 预发

那么接下来,完成了几个功能点的开发之后,develop分支已经达到了一个可以发布的状态,显然按照传统的流程我们首先要经过一个预发的流程。那我们,我们将最新的develop分支拉出来成为一个release分支,暂且取名为release1。

$ git checkout -b release1
Switched to a new branch 'release1'
$ echo "some release configurations" >> release.config
$ ls
1.txt  2.txt  release.config

为了展示需要,这里写了一个release.config文件,我们假设它就是预发时候的一些环境配置,然后commit掉。

$ git add -A
$ git commit -m 'release1'
[release1 c005f04] release1
 1 file changed, 1 insertion(+)
 create mode 100644 release.config

考虑最通常的情况,预发的时候可能遇到一些预发环境下的bug,这个时候我就直接在release分支下进行修复演进,如果bug问题很大,则需要重新并入develop中,拉出新的feature进行开发重构。下面演示直接在release分支下进行bug fixs。假设是1.txt出现了问题,我们将feature1字符串修改为feature1+。

$ echo "feature1+" > 1.txt
$ git add -A
$ git commit -m 'release1 bug fix'
[release1 661497f] release1 bug fix
 1 file changed, 1 insertion(+), 1 deletion(-)

好了,预发环境终于一切正常了,下面就是激动人心的线上发布。这里我们需要将release分支同时并入master分支和develop分支,master分支供线上发布,develop分支供下次开发演进。

$ git checkout master
Switched to branch 'master'
$ git merge release1
Updating 26a17c8..661497f
Fast-forward
 1.txt          | 1 +
 2.txt          | 2 ++
 release.config | 1 +
 3 files changed, 4 insertions(+)
 create mode 100644 release.config

 $ git checkout develop
Switched to branch 'develop'
$ git merge release1
Updating f5cb288..661497f
Fast-forward
 1.txt          | 2 +-
 release.config | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 release.config

好了,一切大功告成。让我们来看一下分支节点网络图。

由图可见,develop,master,release1三个分支的head已经指向同一个节点,work tree已经保持一致。


5. 线上bug热修复

我们经常会碰到一些线上意想不到的bug,需要紧急修复。这时,我们就直接从master分支拉出hotfixes分支进行修复,这里我们假设线上出现了bug的问题在于1.txt的feature1+字符串的+号,我们需要删除掉+号,我们拉出hotfix1分支进行修改。

$ git checkout master
Switched to branch 'master'
$ git checkout -b hotfix1
Switched to a new branch 'hotfix1'
$ echo "feature1" > 1.txt
$ git add -A
$ git commit -m 'hotfix1'
[hotfix1 17692cc] hotfix1
 1 file changed, 1 insertion(+), 1 deletion(-)

bug修复完毕,测试通过后我们将分支合并到master和develop中去。

$ git checkout develop
Switched to branch 'develop'
$ git merge hotfix1
Updating 661497f..17692cc
Fast-forward
 1.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

 $ git checkout master
Switched to branch 'master'
$ git merge hotfix1
Updating 661497f..17692cc
Fast-forward
 1.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


注意这里可能出现的情况就是,由于develop分支仍在开发,所以可能出现hotfix分支合并到develop分支发生冲突的情况,这个时候我就需要处理一下冲突啦。好了,完成这些步骤之后,我们就顺利地修复完了线上bug,一切回归正常。让我们来看一下分支节点网络图。

总结

总得而言,博主认为git的开发流程还是非常清晰简单的,由于git方便的branch机制,我们可以不像以前使用svn那样单纯的整个项目copy的方法去拉分支进行开发,同时清晰的节点网络图也更加有利于项目的迭代。因此再也不会svn混乱了目录结构和开发流程而让项目的熵值越来越大了!!


© 著作权归作者所有

共有 人打赏支持
何良瑞Nyanko君
粉丝 7
博文 5
码字总数 5913
作品 1
南京
私信 提问
加载中

评论(1)

杨延庆
杨延庆
按我的理解,release分支出了问题的话,应该是从release分支拉一个feature分支,在feature分支上修正后,merge回develop分支和release分支,release分支应该是不允许commit的
git文章列表

关于gitlab默认clone协议 Git实现从本地添加项目到远程仓库 翻翻git之---一个简单的标签控件 LabelView (随手发了两张小宝宝的玩耍照) Git 项目推荐 | Java 版微信普通号机器人 翻翻git之---...

d_watson
2016/04/20
26
0
git版本控制开发流程小结笔记(一)

前言 说来有幸,这次实习入职的时间点非常巧,时间点正好是team刚把代码从svn迁移到git上,所以就利用这个契机好好学习了一下在git下的项目开发流程,在本篇博客中将会简单介绍git下最基本最...

何良瑞Nyanko君
2014/05/29
0
3
g4e基础篇#1 为什么要使用版本控制系统

g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索。 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势...

leixu
01/02
0
0
《持续交付-发布可靠软件的系统方法》读书笔记-持续集成

《持续交付-发布可靠软件的系统方法》全书51.2万字,15章,384页。本次阅读第三章持续集成,大概42页。 持续交付 持续集成最早出现在Kent Beck写的《解析极限编程》一书中,主要思想:既然经...

转型实践者
2017/11/25
0
0
好代码是管出来的——Git的分支工作流与Pull Request

  上一篇文章好代码是管出来的——使用Git来管理源代码 介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增、提交进行管理,...

dotNET跨平台
06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 哥们之间报恩的想法被上帝实现了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 小小编辑:推荐歌曲《消愁》 《消愁》- 毛不易 手机党少年们想听歌,请使劲儿戳(这里) @过遥 :周一的早上就应该用来补觉,太困了 周末不想...

小小编辑
40分钟前
48
5
MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
3
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
7
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
22
1
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部