git代码版本管理

git代码版本管理

git的各种分支定义

  • 划分主干分支(master)
  • 开发分支(dev)
  • 开发的feature/xxx分支
  • release分支
  • Hotfix
  • Tag

主干分支master

经过测试QA验收的内容版本,其中囊括所有的地区版本,渠道版本的内容; 也可以不使用该分支,具体可以按项目怎么定义master的含义;

开发分支develop

该分支要是经过一定测试的内容,其中囊括所有的地区版本,渠道版本的内容; 因为功能具有耦合性,所以此分支还是有可能产生bug,没有master稳定 如果需要修复该分支上的bug,可以根据具体项目定义,另起HotfixBug分支都行,建议Bug分支

开发的feature

具体单一一个功能一个feature分支,命名规则是feature/功能名称,eg: feature/mail;名称必须是有意义的英文命名; 该分支上的功能必须经过测试QA验收通过后才可以Merge到开发develop; 需要注意的是,merge到develop的时候,一定只能产生一条commit记录; 次分支在merge完成后,必须删除!

release分支

预发布分支 该分支通常是做为发不版本的一个测试分支,eg:如果需要发布一个腾讯渠道的app,那么就会创建一个release分支,按照PM的要求,把当前里程碑的内容逐一merge到此release分支; 之测试QA在次分支上测试发布版本的内容; 次分支在正式发布完成后,打上发布版本的Tag,并删除此分支 ;

Hotfix

hotfix是紧急修复的分支,常用于Release或master分支;如果QA在测试release分支的时候发现需要 修复的bug,则开发需要另起Hotfix分支来修复次问题,QA在Hotfix分支验收完成后,再merge到release分支,如果有需要,还需要merge到develop 次分支在merge完成后,必须删除!

Tag

该标志是用了记录发布版本的,上线后,后续的发布版本都将基于此tag创建release分支

流程

git 的代码管理流程有一种广为人知的流程,先来说明一下经典的流程

经典流程

先post一张每次讲git都会出现的图; 以下是盗用网络上的图 png

流程的说明

自右到左来分析;项目的的最初版本应该是从master切出去的,git一般刚开始使用的时候也是这样的。如果某一个功能需要开发,那么开发者则需要基于develop切出分支feature/XXX进行开发,注意QA需要在feature/XXX上怼功能进行验收,确定没有问题的时候才能mergedevelop,这一步需要有QA或develop分支的管理执行,不要随意执行;

feature合并到develop的时候,要注意前面分支定义的使用后规则

上面是日常开发的流程。如果遇到发布版本的时候,即基于当前的develop版本切出release分支,QA在release上进行版本验收,如果需要修复release上的bug,直接在release上修复,然后把已经修复的bugmergedevelop;当release验收完成后,即可以将release mergemaster并打上该版本的tag

如果线上出现需要紧急修复的bug,则需要基于master切出Hotfix分支对已经发布的版本进行修复。

但是上面的流程在有些情况下就比较麻烦了,并不是说做不到,只是麻烦或导致分支的定义有些混乱。

调整后的流程

这里就简单罗列一些情况

  • 如果需要发布两个国家的版本(类似王者荣耀的海外版),master有两个?
  • 小范围测试功能的时候,某个渠道A才有功能A,其他渠道不能有功能A,通过远程后台配置?多个develop?

所以我对上图的流程的releasehotfix进行一些小的调整;

png

流程说明

如果遇到发布版本的时候,即基于线上的版本切出release分支,QA在release上进行版本验收,如果需要修复release上的bug,直接在release或者hotfix上修复,然后把已经修复的bugmergedevelop;当release验收完成后,即可以将release打上该版本的tag,然后删除release

如果线上出现需要紧急修复的bug,则需要基于线上的版本切出Hotfix分支对已经发布的版本进行修复。