Git 分支管理流程探讨

news2024/10/6 20:29:48

为了确保项目稳定性,满足项目迭代与项目开发人员的增长,需要尽快制定一个规范的 Git 分支管理流程。此分支管理流程是在 Git-Flow 的基础上做了一些改变。


环境区分


环境分为以下四种:

  • 测试 1 服(开发自测,查看效果等。随时合并提交。)
  • 测试 2 服(提测,冒烟测试,测试使用。功能提测时才能合并提交)
  • 预发布环境(上线前的最后一道防线,配置尽量等同于正式环境)
  • 正式环境

版本号管理


(当前需求版本号不好改的话就添加到第4位。)
版本格式: 主版本号.次版本号.修订号
如: 1.0.1
主版本号:重构、重大的功能更新
次版本号:常规的需求迭代
修订号:正式环境bug修复、部分极小的优化
每一次的发布/部署上线至正式环境,理应都要更新一位版本号。(无论一个迭代发出去后改了几次bug)


分支划分

  • master - 主分支

  • 主分支,与线上环境始终一致。任何时候都不可以直接修改。
  • 每个提交就代表发布了一次线上,每次提交都是一个新的版本号。
  • 可拉取 release、hotfix 子分支,仅能合并 stage、hotfix 分支。
  • develop - 开发主分支

  • 功能开发主分支。
  • 可拉取 feature 子分支,仅能合并 master、feature 分支
  • feature/xxx - 功能分支

  • 用于开发需求、功能。由 develop 拉取。
  • 不可拉取子分支,仅能合并 develop 分支
  • 命名:feature/{待发布功能的版本号}-{功能简述} 。如:feature/1.1.0-error_cache
  • hotfix/xxx - 缺陷分支(仅正式环境bug)

  • 仅用于修复正式环境出现的bug,由 master 拉取。
  • 不可拉取子分支,一般不合并其他分支。
  • 命名:hotfix/{当前线上版本号} 。如:hotfix/1.0.0
  • staging/xxx - 预发布分支

  • 用于功能预发布,部署预发布环境。
  • 不可拉取子分支,一般不合并其他分支。
  • 命名:stage/{此次待上线版本号} 。如:stage/1.1.0
  • release/xxx - 正式版本记录分支

  • 用于部署正式环境,每次master发布时拉取一个对应版本的 release 分支。
  • 不可修改、不可拉取分支、不可合并。仅做记录和方便回滚线上代码用。
  • 命名:release/{此次上线的版本号} 。如:release/1.1.0
  • test - 测试 2 服分支

  • 用于部署测试 2 服环境,测试正式冒烟测试用。
  • 不可拉取子分支,仅能合并 feature、develop 分支。
  • sandbox - 测试 1 服分支

  • 用于部署测试 1 服环境,开发自测,体验效果等。
  • 不可拉取子分支,仅能合并 feature、develop 分支。

项目开发流程


假设当前已有线上版本 v1.0.0:
当前拥有 master(tag为v1.0.0)、develop、stage/1.0.0、test、sandbox 分支。分支内容相同。
待做 1.1.0(任务列表)、1.2.0(表格) 两个版本的功能点。


文字版流程

  • 准备开发:从 develop 拉取 feature/1.1.0-task、feature/1.2.0-excel 两个功能分支。
  • 开发中,测试1服查看效果:将 feature 分合并至 sandbox 分支。
  • 开发完成,测试2服做冒烟测试:将待测试的 feature 分支合并至 test 分支。
  • 冒烟bug:直接在对应的 feature 分支修改。
  • 冒烟通过,准备预发布1.1.0:
  • 提交合并请求,code review 后将 feature/1.1.0-task 合并至 develop 。
  • feature/1.1.0-task 分支不得再有任何改动。
  • 从 develop 拉取 stage/1.1.0 预发布版本分支。将 stage/1.1.0 分支代码发布到 预发布环境。
  • 预发布bug:直接在 stage/1.1.0 分支上提交修改。只改bug!
  • 预发布测试通过,准备正式上线:
  • 提交合并请求,将 stage/1.1.0 合并至 master 。同时拉取 release/1.1.0 分支做版本备份。
  • stage/1.1.0、release/1.1.0 分支不得再有任何改动。
  • 将 master 合并至 develop(将 stage 可能出现的改动同步至开发分支)
  • 将 develop 合并至 feature/1.2.0-excel(更新线上最新代码到未发布的功能分支,防止未发布的功能分支版本过老,未来开发冲突过多)
  • 正式服出现bug(当前线上版本为 1.1.0):
  • 从 master 拉取 hotfix/1.1.0 分支,在该分支上提交代码修复bug。
  • 将 hotfix/1.1.0 分支发布到预发布环境进行测试验证。
  • 测试验证通过,提交合并请求。master 版本号第三位加 1。
  • 将 hotfix/1.1.0 合并至 master。同时拉取 release/1.1.1 分支做版本备份。
  • 重复 master 更新后的步骤,同步至 develop, develop 同步至未发布的 feature。

流程图

项目开发流程注意事项

  1. 已进入预发布,未正式上线。此时需要上线一个紧急的功能(非bug),但 develop、stage 当前版本的代码不能上线,如何处理?
  • 假设当前版本 1.0.0 ,已处于预发布的功能版本为 1.1.0 。
  • 将当前 stage、待发布的 feature 分支版本改为 1.2.0 。从 master 拉取 feature 1.1.0 版本功能分支。
  • feature 1.1.0 开发完成,从 master 重新拉取 test 分支,将 feature 合并至 test 分支测试。
  • 冒烟测试通过,直接从该 feature 拉出 stage/1.1.0 分支,进行预发布测试。
  • 预发布测试通过,合并至 master。发布正式环境。
  • 将 master 合并至 develop 、stage/1.2.0 分支。
  • 继续 stage/1.2.0 的测试。
  1. 从 develop 拉取了两个 feature 分支:f1、f2 。开发一半时发现两个 feature 分支有依赖怎么办?
  • 最好在开始前就确定好两个功能的相关性。若相关则只创建一个 feature 分支。
  • 若已经创建,则需要将两个 feature 分支合并为一个。
  1. 已进入预发布,未正式上线。线上碰到了紧急bug需要立刻修复并验证,如何处理?
  • 按照正常线上bug出现流程处理,从 master 拉取 hotfix 分支。
  • 改完bug后,暂停 stage 分支的测试。将 hotfix 分支的内容发布到 预发布环境上先进行验证。
  • 验证通过,将 hotfix 合并到 master,再把 master 分支合并到 stage、develop 上。
  1. 已进入预发布,未正式上线。有两个 feature 功能,领导突然说只上其中一个功能。如何处理?
  • 弃用、删除当前版本的 stage 分支,develop 分支回滚。
  • 重新将要上线的 feature 合并至 develop,继续正常走流程。
  1. 已进入测试2服(冒烟测试)。有两个 feature 功能,领导说只要一个。如何处理?
  • 从 master 重建 test 分支(删除重建)
  • 重新合并要测试的 develop、feature 分支。
  1. 测试1服被玩坏了,如何处理?
  • 从 master 重建 sandbox 分支(删除重建)
  • 重新合并想要合并的 develop、feature 分支。
  1. feature 往测试分支上合并,有合并冲突怎么办?
  • 在测试分支上处理合并请求冲突
  • 绝不能将测试分支往 feature 上合并!
  1. feature 往 develop 提交合并请求,有合并冲突。工蜂不给合并,develop不能直接合并后提交。如何处理?
  • 创建一个临时的 merge 分支。将要合并的 feature 往该 merge 分支上合并。然后提 merge -> develop 的合并请求。
  • 或者找有权限的直接在 develop 分支处理合并请求。(找大佬)
  • 或者将已合并其他分支的 develop 合并到自己的 feature 分支上。在自己分支上处理好冲突后才提合并到 develop 的合并请求。逐个 feature 合并。(反正 feature 也是能回滚的)

代码提交规范


规范格式


<【版本xxx】> <【类型】> <本次提交内容简述>
[可选:需求/缺陷的链接]
[可选的正文]
示例
【版本1.0.1】【需求】任务模块需求功能开发
https://xxx.xxx.xxx

  1. 任务列表开发
  2. 任务文件上传机制开发
  3. ...其他修改

...
代码提交注意事项


提交的类型有:需求、缺陷、优化等。
当类型为 需求、缺陷 时,必须携带对应的单子链接。
优化时表示代码优化、开发自测问题的修复等。不需要也没有单子,此时可以不填写链接。
遇见代码冲突时,一定要慎重解决,与另一个分支的开发协商处理。不能随意覆盖他人修改!
解决完成后,在项目内全局搜索 <<<<<<<<< 字符。防止漏掉的冲突未解决。

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

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

相关文章

使用c++17std库varaint替代varaint开源库报错处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

GCC + Vscode 搭建 nRF52xxx 开发环境

在 Windows 下使用 GCC Vscode 搭建 nRF52xxx 开发环境 ...... by 矜辰所致前言 最近有遇到项目需求&#xff0c;需要使用到 Nordic 的 nRF52xxx 芯片&#xff0c;还记得当初刚开始写博文的时候的写的 nRF52832 学习笔记&#xff0c;现在看当时笔记毫无逻辑可言&#xff0c…

【教学类-40-03】A4骰子纸模制作3.0(6.5CM嵌套+记录表)

作品展示 背景需求 骰子2.0&#xff08;7字形&#xff09;存在幼儿不会“包边”的问题&#xff0c;求助老师帮忙示范&#xff0c;最后累的还是老师 1.0版本&#xff0c;边缘折线多&#xff0c;幼儿剪起来费力。 2.0版本&#xff0c;边缘折线多&#xff0c;幼儿剪起来费力。&a…

基于开源项目OCR做一个探究(chineseocr_lite)

背景&#xff1a;基于图片识别的技术有很多&#xff0c;应用与各行各业&#xff0c;我们公司围绕电子身份证识别自动录入需求开展&#xff0c;以下是我的研究心得 技术栈&#xff1a;python3.6&#xff0c;chineseocr_lite的onnx推理 环境部署&#xff1a;直接上截图&#xff…

什么是ADC测试,能进行自动化测试吗?

ADC测试是一种电子测试方法&#xff0c;用于评估模拟-数字转换器的性能。ADC(模数转换器)是一种将模拟信号转换为数字信号的电子器件。在ADC测试中&#xff0c;会施加一个已知的模拟信号到ADC的输入端&#xff0c;然后测量其数字输出&#xff0c;通过比较输入信号和输出信号之间…

鸿蒙原生应用开发-DevEco Studio超级终端模拟器的使用

一、了解超级终端模拟器支持的设备情况 该特性在DevEco Studio V2.1 Release及更高版本中支持。 目前超级终端模拟器支持“PhonePhone”、“PhoneTablet”和“PhoneTV”的设备组网方式&#xff0c;开发者可以使用该超级终端模拟器来调测具备跨设备特性的应用/服务&#xff0c;如…

UnitTest 参数化---Parameterized安装

一、Parameterized安装命令 常见安装&#xff1a;pip install parameterized 或使用国内豆瓣镜像源安装&#xff1a;pip install parameterized -i https://pypi.douban.com/simple shell页面&#xff08;安装页面cmd内&#xff09; C:\Users\S3214>pip install paramete…

动态内存管理(上)

目录 为什么要有动态内存分配malloc和freemallocfree calloc和realloccallocrealloc 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f978; C语言 &#x1f43f;️&…

gitblit 搭建本地服务器

gitblit 搭建本地的 git 服务器 一、简介 Gitblit是一个用于管理,查看和提供Git存储库的开源纯Java堆栈。它主要设计为希望托管集中式存储库的小型工作组的工具。 Gitblit 是一个和 Gitlab 、github、gitee 功能差不多的 git 远程仓库系统,Gitblit 开源免费、兼容性强、支持…

C++:this指针和构造与析构的运用

目录 一&#xff0c;this指针 二&#xff0c;构造函数 三&#xff0c;析构函数 四&#xff0c;析构与构造的调用 一&#xff0c;this指针 首先&#xff0c;我们先观察以下类&#xff1a; #include <iostream> using namespace std; class Date { public: void In…

二十、W5100S/W5500+RP2040树莓派Pico<MQTT连接阿里云控制板载LED>

1. 前言 物联网平台提供安全可靠的设备连接通信能力&#xff0c;支持设备数据采集上云&#xff0c;规则引擎流转数据和云端数据下发设备端。此外&#xff0c;也提供方便快捷的设备管理能力&#xff0c;支持物模型定义&#xff0c;数据结构化存储&#xff0c;和远程调试、监控、…

mindspore mindcv图像分类算法;模型保存与加载

参考&#xff1a; https://www.mindspore.cn/tutorials/en/r1.3/save_load_model.html https://github.com/mindspore-lab/mindcv/blob/main/docs/zh/tutorials/finetune.md 1、mindspore mindcv图像分类算法 import os from mindcv.utils.download import DownLoad import o…

举个栗子!Tableau 技巧(259):文本表中省市县数据的灵活逐级下钻「方法一」

之前&#xff0c;我们分享过 &#x1f330;&#xff1a;实现地图中的省市县逐级下钻。有数据粉提出问题&#xff1a;如果不是地图&#xff0c;而是文本表&#xff0c;有什么办法可以像这样&#xff0c;实现地理位置逐级下钻呢&#xff1f; 文本表也是可以的。但是&#xff0c;…

Count-based exploration with neural density models论文笔记

Count-based exploration with neural density models[J]. International Conference on Machine Learning,International Conference on Machine Learning, 2017. 基于计数的神经密度模型探索 0、问题 这篇文章的关键在于弄懂pseudo-count的概念&#xff0c;以及是如何运用…

【Leetcode】202. 两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

Java 身份证号校验,根据身份证号识别出生地

Java 身份证号校验&#xff1a; import org.apache.commons.lang.StringUtils;import java.util.Calendar; import java.util.Collections; import java.util.HashMap; import java.util.Map;/*** desc 身份证工具类* auth llp* date 2022/7/7 16:13*/ public class IdCardNum…

Java算法(三): 判断两个数组是否为相等 → (要求:长度、顺序、元素)相等

Java算法&#xff08;三&#xff09; 需求&#xff1a; 1. 定义一个方法&#xff0c;用于比较两个数组是否相同2. 需求&#xff1a;长度&#xff0c;内容&#xff0c;顺序完全相同package com.liujintao.compare;public class SameArray {public static void main (String[] a…

JAVA微信端医院3D智能导诊系统源码

医院智能导诊系统利用高科技的信息化手段&#xff0c;优化就医流程。让广大患者有序、轻松就医&#xff0c;提升医疗服务水平。 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中…

小红书达人投放比例是多少合适?品牌方必看

品牌做小红书种草推广想要产生更好的效果&#xff0c;是需要素人和达人按照一定比例去进行投放的&#xff0c;素人铺量可以让产品产生迅速曝光的效果&#xff0c;少量达人投放可以让产品产生更好的转化效果。 小红书达人投放具有较高的互动性和口碑传播效果。达人通过自身的影…

打开pr提示找不到vcomp100.dll无法继续执行代码怎么办?5种dll问题解决方案全解析

vcomp100.dll是一个由Microsoft开发的动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它对于许多基于图形的应用程序&#xff08;如Photoshop&#xff09;和多个游戏&#xff08;如《巫师3》&#xff09;至关重要。以下是关于vcomp100.dll的属性介绍以及找不到vcomp100…