Git操作规范之tag的使用技巧详解

作者:王中阳Go 时间:2022-07-30 05:10:54 

常用分支

首先分享一下我们的分支规范,然后再介绍摸索出的打tag的规范。

master

  • master : 主分支 , 最终在master分支对外发布,

  • 此分支只能从其他分支合并,不能再这个分支直接修改

  • 另外所有在master分支的推送应该打标签做记录,方便追溯

  • 例如release合并到master

develop

  • 主测试分支 , 基于master分支创建

  • 包含所有要发布到下一个版本的代码

  • 只能从其他分支合并

  • release 分支开发完成合并到develop

release

  • 开发分支, 基于master分支创建

  • 主要用于新需求新功能的开发

  • 功能开发完毕后合到develop分支发布测试环境,测试通过后合并到master发布生产环境

  • release可同时存在多个

hotfix

  • 补丁分支 , 基于master分支创建

  • 主要用于对线上的版本进行BUG修复

  • 修复完毕后合并到develop分支发布测试环境,测试通过后合并到master发布生产环境

  • 属于临时分支 , 补丁修复上线后可选删除

使用

  • 初始化项目 , 默认创建master分支

  • 从master拉取第一个develop分支

  • 从master拉取第一个release分支(多个开发人员拉取多个release同时进行并行开发 , 互不影响)

  • release分支完成后 , 合并到develop

  • 从develop分支打tag进行提测,提测过程中在原release分支修改BUG,重复步骤4

  • 测试通过后合并release到master,基于master分支打tag发布生产环境.此时可删除当前release分支

  • 上线之后若发现线上BUG , 从master拉取hotfix进行BUG修改

  • hotfix通过测试上线后可选删除当前hotfix

注意

  • 发布线上时一定是master合并开发分支,develop分支可能存在其它未测试通过代码

  • 两个分支进行合并时一定要拉取一下最新代码

tag规范

打tag场景

  • 在测试同学线上回归测试之后一定要给master分支添加tag,方便后续有需求时快速回滚到指定的稳定版本

  • 当一个代码库在同一个时间段有多个需求要按顺序上线时,运维同学需要通过tag标记区分要构建的代码,这时候需要添加tag。

tag命名规范

版本类型_版本号

比如:stable_v1.1.0

意为:稳定版v1.1.0

版本类型说明

版本类型说明备注
pre预发布版,用于运维同学知晓要构建的代码上线测试无误后删除pre类型的tag
stable稳定版,新功能上线后使用这个类型不删除tag,方便后续回滚
hotfix修复版,修复线上bug使用这个类型不删除tag,方便后续回滚
  • pre类型的tag应该在测试同学回归测试通过,打完stable类型或者hotfix类型的tag之后删除。

  • 代码仓库只保留stable类型和hotfix类型的tag,方便回滚到稳定版本;不保留pre这种过渡类型的tag。

版本号设置规范

比如版本号:v1.0.0

  • 第一个数字1,代表大版本,默认从1开始,大版本更新时才递增

  • 第二个数字0,代表小版本更新,默认从0开始

  • 第三个数字0,代表补丁版本,默认从0开始

场景举例

注意:在打tag的时候需要设置message,写清楚注释。

新需求

  • tag name命名规范:stable_v1.0.0

  • tag message:云仓商品添加销量字段

修复bug

  • tag name 命名规范:hotfix_v1.0.1

  • tag message:修复XXX bug

重大版本更新

  • tag name 命名规范:stable_v2.0.0

  • tag message:项目整体重构后上线

特殊情况

预发布环境,需要按顺序构建的:

  • tag name 命名规范:pre_v1.0.1

  • tag message:预发布tag:商品中心上线

  • tag name 命名规范:pre_v1.0.2

  • tag message:预发布tag:新渠道上线

来源:https://juejin.cn/post/7135234266774355981

标签:Git,tag,操作规范
0
投稿

猜你喜欢

  • Python自定义线程池实现方法分析

    2021-12-17 09:13:10
  • Python的迭代器和生成器

    2022-04-29 17:56:09
  • Python 使用 PyQt5 开发的关机小工具分享

    2023-09-15 05:06:02
  • Go语言使用Etcd实现分布式锁

    2024-04-23 09:37:33
  • Vue-cli配置打包文件本地使用的教程图解

    2024-05-22 10:42:05
  • python命令行模式的用法及流程

    2022-05-01 17:31:13
  • 算法系列15天速成 第二天 七大经典排序【中】

    2022-01-10 10:10:25
  • 获取body标签的两种方法

    2024-05-08 09:39:26
  • Python中实现单例模式的n种方式和原理

    2021-01-07 20:45:58
  • MySQL数据库事务transaction示例讲解教程

    2024-01-27 06:43:04
  • 利用python Pandas实现批量拆分Excel与合并Excel

    2023-07-02 19:08:23
  • python列表倒序的几种方法(切片、reverse()、reversed())

    2022-01-28 02:46:52
  • 小程序点餐界面添加购物车左右摆动动画

    2024-04-27 15:22:36
  • asp如何建立和删除文件夹?

    2009-11-26 20:34:00
  • 去掉CSS赘余代码,CSS可以更简洁

    2008-11-05 13:07:00
  • 总结Go语言中defer的使用和注意要点

    2024-02-07 01:48:19
  • 用Python实现群发邮件

    2023-10-30 20:04:36
  • pymysql模块的使用(增删改查)详解

    2024-01-15 06:01:03
  • Persits AspJpeg组件图片水印\\缩略图\\图片合并\\图片切割\\实例教程

    2008-12-14 10:36:00
  • Vue2.x与Vue3.x中路由钩子的区别详解

    2024-04-30 10:39:52
  • asp之家 网络编程 m.aspxhome.com