复杂软件版本如何使用git工具进行管理

news2024/11/20 2:25:56

1.需求说明

一个项目,如果长期开发下去,我们会碰到各种各样的客户,然后就会有各种各样的需求。这时候就会出现一个问题:如果我们的代码都是一个项目,客户的主体流程都是一样,但部分客户又有一些特别的定制需求,所以如果都混在一起去维护。后期维护的复杂度各方位都会增加不少。

针对这种情况,我们如何解决?git这个工具,给了我们很大帮助。这个可以世界级开源平台GitHub和Gitee来看,我们就能一目了然。

2.需要具体实现的功能

2.1.清晰软件版本号

首先从日常系统维护来看,我们比较容易清楚来看到平常都更新或者是修复了哪些功能。

版本的命名规则:3.0.9.22.0128

主版本号.子版本号.阶段版本号.日期版本号

  • 主版本号(1):当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目决定是否修改。
  • 子版本号(1):当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。(此版本号由项目决定是否修改)
  • 阶段版本号(1):一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。(此版本号由项目经理决定是否修改)
  • 日期版本号(051021):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。(此版本号由开发人员决定是否修改)

2.2.每个版本解决了什么问题

新功能:

功能优化:

BUG修复:

我们每个版本,都可以把上面三个维度(新功能、功能优化、BUG修复)来描述我们的系统更新了什么。

2.3.Git打标签与版本控制规范

从开源的项目来看,我们可以看到,开源的项目都是经过一段时间的开发和测试稳定过后,就会发布稳定版本。这时候就会出现标签

打标签的作用:就是给项目的开发节点,加上语义化的名字,也即功能版本的别名。 打上标签名的同时,写上附带信息,可以方便项目日后维护过程中的回溯和复查。 另外,也可以通过标签记录,大致了解当前项目的向下兼容性、API的修改和迭代情况。

3.具体实现

如何通过命令进行打标签,可以参考官方文档:Git - 打标签

我们这里来看看,一般我们在IDEA中的时候,是如何操作。

3.1.创建标签

 在实际的使用过程中,我们会对当时的版本备份,但同时后期我们会有回滚的需求。

如果要从一个版本号回滚到一个新的分支,我们该如何操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDK1.8 与 Language Level 8 关系

什么是Java? 是 SUN(Stanford University Network,斯坦福大学网络公司 ) 1995 年推出的一门高级 编程语言。 是一种面向 Internet 的编程语言。Java 一开始富有吸引力是因为 Java 程序可以在 Web 浏览器 中运行。这些 Java 程序被称为 Java 小程序…

六级备考26天|CET-6|仔细阅读|考研英语2023年英语(一)|8:20~10:00

text1 4/5 text2 3/5 text3 2/5 text4 3/5 12/20 目录 text 1 1. 重点词汇 2. 原文 3. 题目 text 1 1. 重点词汇 sympathise / ˈsɪmpəθaɪz / vi.同情;吊唁;共鸣 (等于 sympathize) ener…

OJ练习第109题——根到叶路径上的不足节点

根到叶路径上的不足节点 力扣链接:1080. 根到叶路径上的不足节点 题目描述 给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值…

KuiperInfer深度学习推理框架-源码阅读和二次开发(3):计算图

前言:KuiperInfer是一个从零实现一个高性能的深度学习推理库,中文教程已经非常完善了。本系列博客主要是自己学习的一点笔记和二次开发的教程,欢迎更多的AI推理爱好者一起来玩。这篇写一下计算图相关的知识点,重点说明ONNX有什么缺…

一口气整理三种不同二维码生成的Java 接入代码

引言 二维码已经成为现代社会中广泛应用的一种工具,它们具有快速、可靠和高容量的信息传递能力。通过扫描二维码,用户可以轻松获取网址、产品信息、支付链接等各种信息。 本文将介绍二维码生成器 API 作为一种工具,并探讨其功能和用法&…

【Linux高级 I/O(4)】异步 IO实例及其优化(全文代码)

异步 I/O 在 I/O 多路复用中,进程通过系统调用 select()或 poll()来主动查询文件描述符上是否可以执行 I/O 操作。 而在异步 I/O 中,当文件描述符上可以执行 I/O 操作时,进程可以请求内核为自己发送一个信号。之后进程就可以执行任何其它…

rocketmq中ConsumeThreadMax不生效原因探究

在项目中设置了ConsumeThreadMax但是消息消费时仍是单线程消费,故而进行追踪排查。 其根本原因是rocketmq中,消费者线程池队列使用的是LinkedBlockingQueue。 rocket版本:rocketmq-client-4.9.3 代码追踪:从DefaultMQPushConsu…

C++设计模式之抽象工厂模式(Abstract Factory)

文章目录 定义前言问题解决方案 结构适用场景实现方式优点缺点与其他模式的关系实例 [C]22种设计模式的C实现大纲 定义 抽象工厂是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。 前言 问题 假设你正在开发一款家具商店模拟器。…

Multi-Head Attention和Transformer Decoder(GPT)详解

文章目录 一、Transformer的Attention1. Self-Attention2. Masked Self-Attention3. Multi-Head Attention 二、Transformer Decoder(GPT)1. GPT的网络结构2. GPT的计算原理 一、Transformer的Attention 1. Self-Attention 如前篇文章所述(ht…

如何开发一个人人爱的组件?

组件,是前端最常打交道的东西,对于 React、Vue 等应用来说,万物皆组件毫不为过。 有些工作经验的同学都知道,组件其实也分等级的,有的组件可以被上万开发者复用,有些组件就只能在项目中运行,甚…

Springboot +spring security,配置多个数据源:验证不同用户表

一.简介 上篇文章写到,我们在配置jdbc和mybatis 来源,进行登录后,出现了如下错误! 后面解决方案是:屏蔽了其中一个来源,登陆成功,也分析了其原因。 但是,但是如果需要配置多个数据来源&#…

2023年认证杯SPSSPRO杯数学建模B题(第一阶段)考订文本全过程文档及程序

2023年认证杯SPSSPRO杯数学建模 B题 考订文本 原题再现: 古代文本在传抄过程中,往往会出现种种错误,以至于一部书可能流传下来多种版本。在文献学中,错误往往被总结成“讹”、“脱”、“衍”、“倒”等形式,也可能同…

cda 1级模拟题错题知识点总结

Sql truncate函数 格式:TRUNCATE(number, decimals) number: the number to be truncated decimals:the number of decimal places to truncate to 截断到的小数位数,如果为0则表示不保留小数 例如: select truncate(2.83,0) 结果为2 select truncate(…

解读kubernetes部署:配置docker私服密钥与SSL证书创建

为k8s配置docker私服密钥 为了kubernetes有权访问您的docker私服,需要在kubernetes的凭证中建立docker私服的密钥: kubectlcreatesecretdocker-registryaliyun-secret--docker-server--docker-username--docker-password--docker-email--namespacens-jav…

2.golang的变量、常量、数据类型、循环和条件判断

一、变量 变量(Variable)的功能是存储数据。Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。 Go语言的变量声明格式为: var 变量名 变量类型 例如: var name string var age int var isOk b…

线上问题处理案例:出乎意料的数据库连接池 | 京东云技术团队

导读 本文是线上问题处理案例系列之一,旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象,逐步定位到数据库连接池保活问题的全过程,并对其中用到的一些知识点进行了总结。 一、问题描述…

LabVIEWCompactRIO 开发指南29 数据通信

LabVIEWCompactRIO 开发指南29 数据通信 LabVIEW FPGA中的数据通信分为两类:进程间和目标间。进程间通信通常对应于FPGA目标上的两个或多个环路之间的数据共享。目标间数据通信是在FPGA目标和主机处理器之间共享数据。对于这两种情况,在决定使用哪种机…

扩散能垒计算在电池材料领域的革新应用

扩散能垒计算在电池材料领域的革新应用 随着能源需求的增长和环境意识的提高,电池技术成为解决可再生能源存储和移动电子设备需求的关键。电池材料的研究和开发变得日益重要,而扩散能垒计算作为一种先进的计算方法,为电池材料领域带来了革新的…

设计模式之【观察者模式】,MQ的单机实现雏形

文章目录 一、什么是观察者模式1、观察者模式应用场景2、观察者模式的四大角色3、观察者模式优缺点 二、实例1、观察者模式的一般写法2、微信公众号案例3、鼠标响应事件API案例 三、实现一个异步非阻塞框架1、EventBus2、使用MQ 四、源码中的观察者模式1、Observable/Observer2…

pygam第3课——画图小程序

前言:我们前两节课已经学习了,界面的设计、图片的加载、那么今天我们将继续学习pygame的基础知识,我们的今天学习的内容是:鼠标滑动时坐标的实时获取、鼠标的移动事件、鼠标的点击事件、图形绘制等。希望大家能 搭建界面&#xf…