Git版本管理及使用规范

news2024/9/30 11:28:24

  git是目前为止版本管理的最常用工具之一,利用git的功能,可以很容易的实现版本的发布和留档,让原本杂乱的版本管理问题变得较为简单。

Git分支管理和常用流程

Git的常用分支包括:tag(git的功能,并不是真正的分支)、master、hotfix、bugfix、release、develop、feature

常用的合并流程如下图:

版本管理流程图

分支简介

  • tag:发布上线分支。实际上tag是一个gitlab的功能,在产品上线的时候基于主分支打tag,tag号一般为版本号,主要目的是为了留存和线上一模一样的代码环境,以备紧急时可以恢复现场。
  • master:主干分支。有且仅有一个,除项目负责人外其他开发人员不得向 master 分支合并内容。只容许将已经测试完成的功能或者紧急修复的bug进行合入,以便进行打tag发版本。
  • hotfix:紧急线上 bug 修复分支。紧急即需要立刻尽快去处理发布上线(自 master 拉取), 直接进行测试及上线。
  • bugfix:非紧急上线的 bug 修复分支。 如非当天上线即使用 bugfix 进行命名(自 master 拉取) , 直接进行测试及上线。
  • release:预发布分支。作为提测及上线分支,release是发布正式版本之前(即合并到 master 分支之前),需要有一个预发布的版本进行测试,一般是转测给专门测试人员的转测分支。
  • develop:主开发分支。存有确定性的所有功能(上线和未上线), 作为开发环境共有的部署分支。该分支一般不容许个人直接合入,合入前需要进行代码review。
  • feature:功能开发分支,feature 是为了开发后续版本的功能,从 develop 分支拉取出来的。开发完成稳定后,要再并入 develop 分支。在实际中,一般feature分支也会进行代码合入保护,由开发特性的组长进行负责,合入时要进行代码review工作。
  • 个人分支:每个开发人员自己的开发分支,是实际开发中最多的项目分支,该分支的内容由每一位开发人员进行自行合入,开发完成后,根据开发的内容合入feature或者develop分支,合入时一般进行代码review工作。

命名规则

hotfix:hotfix_{功能},如 hotfix_providerLose。
bugfix:bugfix_{功能}年月日,如 bugfix_pubMsg_20210701。
release:release
{功能}年月日,如 release_pubMsg_20210701。
feature:feature
{功能}_年月日,如 feature_pubMsg_20210701。

分支管理

  • 上线完成之后, 提交申请进行master的合并处理, 打 Tag 维护(审核人员 / Leader)
  • 相关分支创建人, 删除对应上线功能 feature / release / bugfix 分支

Git代码提交规约

  • 代码提交时,在commit中写清楚完成了哪些内容
  • 在进行合入develop或者feature时,在合入的Merge request中写清楚方案和实现思路,方便代码review
  • 理论上一次提交仅包含一个功能修改,如功能过大,需要注明功能的完成进度。若一次提交有多个功能修改,则每个功能提交描述作为单独的一行。

代码提交流程

1、代码修改完成后,需先进行编码规范检查,注释检查,单元测试等操作。
2、测试通过后提交到本地,检查提交文件是否正确,有无遗漏文件,添加相关说明。
3、拉取服务器的代码,检查代码合并结果,若有冲突则找相关人员解决冲突。解决冲突后,重新编译测试代码,测试成功后提交本地代码。
4、推送代码到服务器。
5、提交merge request,提醒项目组成员进行代码review,完成后负责人合入分支

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

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

相关文章

测试报告和结果分析 —— allure整合pytest生成测试报告

一、生成HTML测试报告的三种方式: 1、unittest和HTMLTestRunner整合 2、allure和pytest整合 3、Jenkins中安装allure插件(Jenkins安装插件出错,不能正常使用) 二、allure整合pytest生成html测试报告: 1.下载allur…

云服务介绍

云服务 1.概念 云服务,顾名思义就是云上的服务,简单的来说就是在云厂商(例如 AWS、阿里云)那里买的服务。 目前国内云厂商有阿里云、腾讯云、华为云、天翼云、Ucloud、金山云等等,国外有亚马逊的 AWS、Google 的 GC…

C++ 读MTK代码 综测校准 PSU经典接口读各种型号开关电源电压或电流 visa

为啥要使用接口?因为有多个电源,接口都相似的。再加型号上层很少改动(类型切换)或不用改。 为啥要使用友元?友元函数的主要作用是允许外部函数或类访问被声明为友元的类的私有成员。 如果不使用友元怎么做?最后回答。 1.C定义dl…

SpringBoot Web 分层解耦

目录 分层解耦三层架构介绍代码拆分 分层解耦耦合问题解耦思路 IOC&DIIOC&DI入门IOC详解bean的声明组件扫描 DI详解 在SpringBoot Web请求响应这篇文章的案例中提到,解析XML数据,获取数据的代码,处理数据的逻辑的代码,给页…

教你如何给『linux』打补丁

前言 我们在参与某些开源项目的过程当中,经常会遇到漏洞之类的问题,需要我们打补丁解决。尤其是 Linux 源码,源码代码量较多,在修改完内核并发布新内核的时候,基本采用补丁的方式进行发布,而不是将整个内核…

【LeetCode刷题】2两数相加

2. 两数相加 JAVA代码 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xf…

MAC-设置mysql开机自启动

mac 设置mysql开机自启动 - MoonyHee - 博客园

学习网络编程No.8【应用层协议之HTTP】

引言: 北京时间:2023/10/9/13:03,一晃好多天过去了,9月14号的文章终于在昨天发出去了,也是许久没有更文了,国庆放假期间由于各种原因,在王者峡谷和铲子世界遨游的不亦乐乎,有待改善…

Ubuntu deadsnakes 源安装新版 python

前言 适用于 Ubuntu 安装 python3.11 等新版本。 因为比较常用并且不想重新编译就记录一下,方便以后面向CV安装。 安装 添加 deadsnakes ppa 源 sudo add-apt-repository ppa:deadsnakes/ppa更新 apt sudo apt update安装 python3.11 sudo apt install python…

Node编写获取用户信息接口

目录 前言 初始化路由模块 使用postman发送get获取用户信息请求 初始化路由处理函数模块 获取用户基本信息 前言 在前两篇文章中已经介绍了如何编写用户注册接口以及用户登录接口,这篇文章介绍如何获取用户信息,本篇文章建立在Node编写用户登录接口…

国民技术N32G031 keil开发环境搭建

国民技术N32G031 keil开发环境搭建 目录 国民技术N32G031 keil开发环境搭建1 keil uVison5安装2 安装N32G031的pack包3 JLink添加Device(非必须)结束语 1 keil uVison5安装 这个网上的教程大把,我这里就不说了,同学们自行下载安装…

图像压缩(2)《数字图像处理》第八章 8.1节 基础知识

图像压缩(1)《数字图像处理》第八章8.1节基础知识 一. 前言二.引言三.基础知识8.1.1 编码冗余8.1.2 空间冗余和时间冗余8.1.3 不相关的信息8.1.4图像信息的度量8.1.5保真度准则8.1.6 图像压缩模型8.1.7 图像格式、容器和压缩标准四. 小结 一. 前言 始于…

Linux阻塞IO(高级字符设备二)

阻塞IO属于同步 IO,阻塞IO在Linux内核中是非常常用的 IO 模型,所依赖的机制是等待队列。 一、等待队列介绍 在 Linux 驱动程序中,阻塞进程可以使用等待队列来实现。等待队列是内核实现阻塞和唤醒的内核机制,以双循环链表为基础结…

【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构

完全解耦的时间片轮询框架构 简介项目代码timeslice.htimeslice.clist.hlist.c 创建工程移植代码实验函数说明timeslice_task_inittimeslice_task_addtimeslice_tak_deltimeslice_get_task_num 结尾 简介 timeslice是一个时间片轮询框架,他是一个完全解耦的时间片轮…

力扣刷题 day54:10-24

1.十进制整数的反码 每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。注意,除 N 0 外,任何二进制表示中都不含前导零。 二进制的反…

【Java 进阶篇】使用 Java 和 Jsoup 进行 XML 处理

XML(可扩展标记语言)是一种常用的数据交换格式,它被广泛用于在不同系统之间传递和存储数据。Java作为一种强大的编程语言,提供了多种方式来处理XML数据。其中,Jsoup 是一个流行的Java库,用于解析和操作XML文…

【数据结构练习题】消失的数字 --- 三种解法超详解

✨博客主页:小钱编程成长记 🎈博客专栏:数据结构练习题 🎈相关博文:添加逗号 消失的数字 1. 🎈题目2. 🎈解题思路✨方法一:先排序,再找缺失的值✨方法二:按位…

怎么禁止员工上班追剧

怎么禁止员工上班追剧 安企神终端安全管理软件下载使用 说到员工上班追究打游戏摸鱼,其实是一种不负责任的行为,这样的行为不仅会影响到工作效率,还会给周围的同事带来不好的工作氛围,会造成恶性循环,所以&#xff0…

windows下安装配置CGAL

一、下载安装Boost、CGAL 下载地址:https://sourceforge.net/projects/boost/files/boost-binaries/ Boost是CGAL的强制依赖项。SourceForge上提供了Boost的二进制版本(此版本无须编译,可直接使用)。Boost安装程序会同时安装Boos…

30天精通Nodejs--第二天:模块系统与npm

深入了解Node.js:模块系统与npm Node.js作为一款强大的服务器端JavaScript运行环境,模块系统和npm(Node Package Manager)是其成功的重要组成部分。为我们平时提供了便捷的工具和资源,使得在Node.js平台上构建应用变得…