GIT – 代码分支管理模型之一
就像人心散,队伍不好带一样,代码版本多,分支也不好管
当产品开发到肯定程度后,多版本同时开发,各种热修复等等问题,势必会带来版本分支管理的问题。今天我们准备一起来看看第一种代码分支管理方案。
这里要先强调一下,分支管理的方式各有千秋,不存在谁肯定比谁好,只有谁比谁更适合你而已
热门的成功代码分支管理
这款人们的分支管理方案只需是从这篇叫A Successful Git Branching Model 衍生出来的。很多企业的项目都是采用这种方式来进行管理。下面这张图涵盖了这种方式的各种分支设计:
A successful Git Branching Model
这个模型基本能满足企业项目开发过程中遇到的各种代码版本管理的需求,下面尝试着把这种模型分解给大家讲讲:
咬住青山不放松
在上面的图中,大家可以看到有两个分支的名字被加粗了:master
和 develop
,这两个是分支当中的中流砥柱。
master
这是新建一个GIT repository之后的第一个分支。在这个模型中,master分支代表的是当前产品线上的版本,它的最后一个commit可能是已经上线了,或者者已经经过QA/PD/PO 千万次折磨、分分钟可以上线的功能。换句话说,这条分支要做到 随时都可以上线的! 要是谁把一个开发了一般的功能提交到这个版本上去,有可能会被PO拉去祭天的! 所以假如有严格的权限管理的话,一般会把这个分支给锁起来,有且仅有上线的同事才有权限动它!
另外master的每次上线都会打一个tag,表明版本号是多少
develop
一般灵长类动物都敬畏祭天这样的操作,所以我们需要开拓一篇新天地来大有作为。为了和大部队保持一致,develop
的分支是基于master
创立出来的
C:\githome\github\gitdou (master) (gitdou@0.1.0)λ git branch* masterC:\githome\github\gitdou (master) (gitdou@0.1.0)λ git checkout -b developSwitched to a new branch 'develop'C:\githome\github\gitdou (develop) (gitdou@0.1.0)λ git show-branch -a --no-name* [develop] add httpUtil.js ! [master] add httpUtil.js ! [origin/HEAD] add httpUtil.js ! [origin/master] add httpUtil.js----
最后的git show-branch -a --no-name
命令的输出可以看到develop
的分支是基于master
创立出来的
假如项目不是特别大,版本管理也比较简单,那么master跟develop这两个分支就基本够用了
文体两开花
当项目略微大少量的时候,会遇到各种各样的版本管理需求,但不肯定每一种你都需要,当需要的时候可以再建立这些分支,比方有
features
,release
,hotfix
features
第一种情况比较常见,项目有很多同事并行开发,比方分了多板块给多个小组进行开发,假如各个板块都往develop
分支上面丢,那么基本没办法做持续集成(Continue Integration)的操作。尽管最后集成的时候各板块肯定会和谐相处的,但是在开发过程当中,不肯定每一个commit都是向板块兼容,所以最好能每个板块都自行在一个旮旯捣腾,等最好确定能相亲相爱了,大家再杵到一块去。
这是我们可以基于板块创立各种feature
分支,有关开发人员就在相应的分支上进行开发就行,等到各个功能分支基本完成了,我们再把这些分支merge到develop上面去
假如有了feature分支,那么develop分支基本就成了集成分支了
release
前面说了master分支代表着当前产品线上的版本,分分钟可以上线部署而不会导致祭天这种结局的。但这有些项目或者团队有这样的情况,产品上线前要先部署到准产品线
上去玩,内测一周左右,确定完全没有问题了再上到产品线上去。在内测的这一周,假如发现了有问题了,赶紧从develop分支进行修复,再上到准产品线
来验证。假如我们用master分支来进行准产品线的部署,在内测的这一周发现问题,而这时我们的产品线上有紧急问题要fix,那么我们就无法直接拿master
分支上线,这就做不到我们之前的承诺: master分分钟可以上线而不用祭天
所以我们可以创立一个release的分支来进行准产品线的部署和问题修复,知道确认完全没有问题了,我们再同步到master分支去上线
hotfix
做系统的哪可能没有bug!当产品线上无辜
出现bug的时候,我们要去哪个分支做修复呢?
- master :显然不合适,产品线上因为设计或者者考虑不周出现bug一般是不用祭天的,但假如由于这样,在master上面一通乱改,那就有可能要祭天了
- release:这个是给下一个版本用的呢。假如是上一个版本的话,那新添加的修改就破坏了原来版本号的意义了,比方原来分支叫release-1.0.1, 那么加了这个版本还叫这个名字吗?
- developer: 假如还有少量其它正在开发的功能,那一会上线的时候就会连带这个也稍上去了!
- feature: 这就有点扯远了
看来上面这4种分支都不大合适,那就来款新的,就叫hotfix. hotfix分支是从master分支直接创立出来的,用来做少量产品线上紧急的代码修复,或者者临时增加的小功能。开发人员直接在这个分支上进行开发,功能完成后直接上到master分支再上线。
记得每次hotfix上线后,要把功能同步回developer,再到各feature的分支上
以上就是关于 这款 成功的代码分支管理模型
的讲解,基本上能满足大部分企业大部分项目的代码版本管理的需求! 后面会详情另外一块代码分支管理模型,是指我们公司的一种管理的方式,下回见!
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » GIT – 代码分支管理模型之一