文档章节

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

何良瑞Nyanko君
 何良瑞Nyanko君
发布于 2014/05/29 12:20
字数 959
阅读 1492
收藏 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
ionic环境配置以及创建项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cJune/article/details/85225506 文章目录 git 是一种敏捷方便的的分布式版本控制工具,操作简单,速度快,可...

刘佳欢--hannah
2018/12/23
0
0
g4e基础篇#1 为什么要使用版本控制系统

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

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

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

转型实践者
2017/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
2
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
4
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部