文档章节

非常清晰明了的GIT版本管理图

daniel-john
 daniel-john
发布于 2016/04/22 14:42
字数 1162
阅读 349
收藏 14

Git版本管理方法

  Git和SVN是我们代码开发中,最常用的两款代码管理软件。在这里我来写写我在工作中如何使用Git来管理我们的代码开发。
  首先,我们是一个多人开发的团队,因此在开发过程中,少不了要进行多人协作的时候。不同的功能分支就成了家常便饭的事情了。咱先来看一副图:


GitFlow.png

  这幅图里画的是我日常工作中,代码管理中Git分支的存在形式。从最上层的一行中可以看到,一般会存在一些这样的分支:

>>Master: 主分支;主要是稳定的版本分支,正式发布的版本都从Master拉。>>Develop: 开发分支;更新和变动最频繁的分支,正常情况下开发都是在Develop分支上进行的。>>Release:预发行分支;一般来说,代表一个版本的功能全部开发完成后递交测试,测试出Bug后进行修复的分支。>>Features: 功能分支; 其实Features不是一个分支,而是一个分支文件夹。里面包含了每个程序员开发的功能点。Feature开发完成后合入Develop分支。>>HotFix: 最希望不会被创建的分支;这个分支的存在是在已经正式上线的版本中,发现了重大Bug进行修复的分支。

  介绍完了几个分支的主要功能,我们能谈谈一个具体的App软件版本开发中的流程。
1、软件版本的起点:A
  需求总是在不断更新的。
  上一次产品经理需求0.1的软件版本刚刚完成后,这不又来了新的版本需求0.2,这次一共两个功能点。幸好我们有Git,让并行开发成为可能。拉取Develop分支准备开干!

2、开发的起点:B
  两名工程师,两个不同的需求,大师甲和大师乙各自领取一个功能点开干;从Develop拉取属于自己的分支,有单独的分支就不会被干扰:)

3、开发的终点:H
  一周不到,两位大师就已经完成了属于自己的功能;从图上看,都有两次代码的提交。大师们各自开发的功能初步看似乎没 有啥问题,但是我们的App版本是一个多功能的集合,是否合在一起也会没有问题?这时候大师们把属于自己的分支合入Develop,并删掉自己的工作 Branche。编译,运行,Success!

4、预发行的起点:Release 0.2 节点(I)
  大师们的能力果然与众不同,合入后没有一点问题,达到提交测试部的标准。新建Release 0.2 分支,代表一个里程碑式的事件。

5、Release 分支Bug宿命
  世上没有哪个大师的代码是没有Bug的,大师甲和大师乙也不例外。这不,测试部刚拿到预发行的版本就曝出了2个Bug。
  不过没有关系,能够复现的Bug对于我们来说就不是Bug。从Release 0.2拉取Bug修复分支。修好了,继续合进Release 0.2。谁叫Release就是这样的宿命呢。

6、版本发行的终点: M
  但愿人长久,Bug不再有。
  经过大师们艰苦卓绝的bug修复,终于通过了测试部的测试,也得到了产品经理们的认可,准备提交App Store审核。
  Release合入Master分支,打上Tag 0.2,这就是这次的MileStone了。
  当然也得记得Release合入Develop,之前这么多的bug也得在Develop上修复修复不是。做好了这些,Release就可以删啦。

7、救火队员一般的HotFix: N
  好事多磨!AppStore刚发出去的App, 就有用户反馈Crash! 大师甲和大师乙临危受命!
  从Master拉取HotFix分支来搞定它。原来是数组越界!分分钟搞定。完成后合入Master,版本更新为Tag 0.3,代表我们修复了重大问题。编译,运行,没问题,提交App Store等审核。
  噢,one more thing, HotFix 也要合入Develop,又多了一个功能点(bug修复)不是。

8、新的轮回开始:P
  1-> 7就是一个版本的开发过程中,我们的Git Flow流。到了最后,P和O节点拥有了相同的内容,就像在一开始的A和B那样。
  这时候,我看见产品经理又拿着版本需求1.0向我走来......


本文转载自:http://www.jianshu.com/p/7dddf0e9f1ef/comments/1291557

daniel-john
粉丝 17
博文 133
码字总数 56028
作品 0
其他
程序员
私信 提问
macbook 上HomeBrew安装与简单使用

. 前言 作为从window系统转到linux系统刚开始很多东西一知半解,直到两年后今天拥有自己了Macbook Pro一些存在的迷惑一一解开。大家都很喜欢 (Debian/Ubuntu)系列的apt包管理系统和(Redhat/F...

石头Robert
2016/02/27
155
0
git常用技能(转)

学习使用 Git 已经一年有余,一些常用技能也用的炉火纯青了,但偶尔碰到一些生僻的技能,总是需要去 Google,第二次用时又忘了。所以这是一篇我自认为比较重要的 Git 技能表,主要供自己查阅...

张小贤
2015/10/20
115
0
Git Flow

Git的优点 Git的优点很多,但是这里只列出我认为非常突出的几点。 由于是分布式,所有本地库包含了远程库的所有内容。 优秀的分支模型,打分支以及合并分支,机器方便。 快速,在这个时间就是...

年少爱追梦
2016/09/08
12
0
有 Github 帐号 ≠ Github

原文来自我在 Segmentfault 的回答: GitHub 应该放什么类型的代码? 这是一个误会 我想,现在很多程序员都对 Github 存在误解。 大多都是觉得『虽不明,但觉厉』的样子,以为有个 Github 帐号...

RyanHoo
2014/10/23
0
8
git与svn的比较

公司项目最近从svn更换到了git,不舍得那适应没多久的svn分支开发,但毕竟不排斥更好的工具。大家都说git比svn好用,虽然在我接触git与svn的时间内,我也下意识觉得git好用,但真正运用到实际...

cobish
2016/04/05
248
0

没有更多内容

加载失败,请刷新页面

加载更多

PO BO VO DTO POJO DAO概念及其作用(附转换图)

J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋友...

Airship
12分钟前
0
0
curses 管理插件

http://bbs.nga.cn/read.php?tid=9603776&rand=851

MtrS
今天
3
0
网站运营类指标

1 网站流量类指标 1.1 到达率 1.2 UV   UV即Unique Visitor,又称独立访客。UV是衡量用户“人数”的重要指标,反映了来到网站的用户“数量”。UV定义只跟时间有关。 1.3 Vist   Vist又称...

qwfys
今天
4
0
Commons-lang3提供的StopWatch执行时间监视器

Commons-lang3提供的StopWatch执行时间监视器, spring也提供了同样功能的工具 前言 我们如果要统计一段代码的执行时间:我们的办法是 public static void main(String[] args) {      ...

独钓渔
今天
2
0
Kernel 块设备驱动框架

1,总体架构: 块设备驱动框架是Linux设备最重要的框架之一,涉及内核的vfs,设备驱动模型等模块,是内核中异常复杂的一个框架。我们先看一下块设备设计的主要框架结构,先从总体上对块设备有...

yepanl
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部