Git代码版本控制流程

来源:https://www.cnblogs.com/fangsmile/p/11535302.htmlhtml

咱们的项目使用Git做为代码仓库、和版本控制工具。
程序员

Git有几种Workflow,来管理代码版本变动流程,咱们采用Gitflow Workflow流程。面试

 

 

Gitflow Workflow,采用了master、develop、release、feature、hotfix等几个分支。master、develop分支的生命周期是永久的,release、feature、hotfix分支都是辅助分支,其生命周期是短暂的。微信

各个分支的做用及意义,见下。 架构

master分支

master分支用于保存官方发布历史,与线上的版本一致。要确保任什么时候候从master分支均可以拿处处于可发布状态的代码。app

一个工程只有一个master分支,建立Git工程后自动建立,生命周期为永久。编辑器

跟master分支打交道的分支有release分支、hotfix分支:微服务

  • 测试经过后,“配置管理员”(如下简称为“配管”)将release分支合并到master分支。工具

  • 线上紧急修复后,“配管”将hotfix分支合并回master分支。测试

release分支合并到master分支后,须要在master分支上打Tag(记录里程碑),标记官方发布的版本号。

版本号的命名规则

命名规则:vx.y.z

  • x:大版本号,有重大功能发布时升位。

  • y:中版本号,增长新功能或功能优化改进时升位。

  • z:小版本号,有hotfix时升位。

 

“配管”负责在master分支上打Tag。

 

develop分支

develop是开发集成的分支,全部开发完成的代码提交到此分支。功能累积到必定程度或者周期性发布须要提测时,今后分支迁出代码到release分支,进行测试。要确保任什么时候候均可以从develop分支拿到最新开发进展的代码。

一个工程只有一个develop分支,最初由“配管”建立,生命周期为永久。

跟develop分支打交道的分支有release分支、hotfix分支、feature分支:

  • “开发主管”提测时,“配管”从develop分支迁出代码到release分支。

  • release分支测试经过后,“配管”将release分支合并回develop分支。

  • 线上紧急修复后,“配管”将hotfix分支合并到develop分支。

  • 功能开发完成后,“开发主管”(须要多人协做开发的feature)或各个开发(独立开发的feature)将feature分支合并到develop分支。

 

release分支

release是测试分支,用于测试某个待发布的版本。从develop分支迁出代码到release分支,冻结代码(除了修改bug),进行测试。测试经过后合并到master分支,正式发布。

release分支使得待发布版本的测试与新版本的开发活动能够并行,互不干扰。

一个工程有多个release分支,一个待测试的、准备发布的版本一个分支。release分支的生命周期不是永久的,最初起源于develop分支,最终归于master和develop分支。提测时,“配管”建立一个release分支;测试经过、合并到master分支及develop分支后,“配管”删除该分支。

跟release分支打交道的分支有develop分支、master分支:

  • “开发主管”提测时,“配管”从develop分支迁出代码、建立一个release分支。

  • release分支测试经过后,“配管”将release分支合并到master分支,同时合并回develop分支。

release分支的命名规则

命名规则:release_x.y.z

x、y、z的意义,同master的Tag。由于release分支通常用于发布新功能或功能优化改进,因此x、y会有升位,z取0。

测试、开发修改bug,都是在release分支上进行。在此期间,应严禁新功能的代码并入release分支,应合并到develop分支。

 

feature分支

feature分支是各个功能的开发分支,开发完成后合并到develop分支。

feature分支使得多我的能够并行开发,互不干扰。

一个工程有多个feature分支,一个feature一个分支。feature分支的生命周期不是永久的,最初起源于develop分支,最终也归于develop分支。开始开发一个新功能时,由“开发主管”或开发本身建立一个feature分支;功能开发完成、合并到develop分支后,“开发主管”或开发本身删除该分支。

跟feature分支打交道的分支只有develop分支:

  • 对于须要多人协做开发的feature:“开发主管”从develop分支迁出代码、建立一个feature分支,而后通知给须要协做的各个开发;各个开发在此分支上提交代码。各个开发的代码都提交后,“开发主管”将该feature分支合并到develop分支,而后删除该分支。

  • 对于不需协做、开发可独立完成的feature:能够由开发本身从develop分支迁出代码、建立一个feature分支;开发完成后,开发本身将该feature分支合并到develop分支,而后删除该分支。

feature分支的命名规则

命名规则:feature_xxx

xxx为功能的名称,如notification(通知)、circle(圈子)等。

hotfix分支

hotfix分支用于紧急修复线上的bug。

hotfix分支使得线上bug的紧急修复,与待发布版本的测试、以及新版本的开发活动能够并行,互不干扰。

一个工程有多个hotfix分支,一次hotfix建立一个分支。hotfix分支的生命周期不是永久的,最初起源于master分支,最终归于master和develop分支。提出hotfix时,“配管”建立一个hotfix分支;bug修改完成、合并回master分支以及develop分支后,“配管”删除该分支。

跟hotfix分支打交道的分支有master分支、develop分支:

  • 须要紧急修复线上bug时,“配管”从master分支的某个Tag(通常是最新的)迁出代码、建立一个hotfix分支。

  • bug修改完成、测试经过后,“配管”将该hotfix分支合并回master分支,同时合并到develop分支。 

hotfix分支的命名规则

命名规则:hotfix_yyyymmmdd

yyyymmdd为提出hotfix的日期,通常状况下hotfix的bug必须当天修复、发布。

 hotfix分支合并回master分支后,须要在master分支上打一个Tag,标记当前版本,小版本号升位。

 

 具体到一个工程中,各个阶段的具体流程为:

项目启动

 

准备开发环境

 

 

测试流程

 发布流程:

 

 

hotfix流程:

 

做者简介猿芯,一枚简单的北漂程序员。喜欢用简单的文字记录工做与生活中的点点滴滴,愿与你一块儿分享程序员灵魂深处真正的心里独白。个人微信号:WooolaDunzung,公众号【猿芯输入 1024 ,有份面试惊喜送给你哦

< END >

【猿芯】
 微信扫描二维码,关注个人公众号。

喜欢就点个"在看"呗^_^

本文分享自微信公众号 - 架构荟萃(dwooola)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索