git管理历险记

news2024/12/24 10:15:00

本篇文章主要是记录一下公司内git管理策略的变更,又如何因地制宜的磨合出适合团队的方法论,以便未来的职业生涯遇到类似的问题可以稍微触类旁通下。

传统git策略

dev -> test -> pre -> main

这也是比较经典的一个环境对应一个分支,许多没有并行开发需求的公司都会使用这个。

但是开始并行开发多个需求就遇到了问题:

所有代码都在环境分支上开发,可能导致dev、test分支修改过多堆积,真要上pre或生产时总要花费很多精力去整理或解决冲突。

并且,如果原本说好一起上的多个需求,有某个需要先上则会需要再单独切分支处理,测试的时候环境也需要单独切到这个分支使用,非常麻烦。

解决方案:

  1. 每个功能都有单独的分支
  2. 在test可以替换为feature-join分支 *
  3. 收回随意修改部署环境分支的权限

*: feature-join为集成测试分支,用于多个需求同时测试但是不同时上线的情况。

最终流程为:

基于main签出新的功能分支 -> test/feature-join -> pre -> main

更适应变化的策略

经过调整冲突比之前少了,但是只是少了dev的部分冲突,在test和pre上还是会存在分支环境不同导致的合并问题。正好公司在推行敏捷开发,以迭代形式上新功能及修复,正好以另一种方式改动策略。

如下图:
在这里插入图片描述

前提:目前我司只有两个环境供使用、实行敏捷开发有极多并行开发的合并操作、有许多提前上线需求、需求不清晰

基于这些前提,我们能确定是一定要能够尽可能不影响单独功能上线以及解决并行开发冲突

先来解释下图中各个步骤:

第一,也是最核心的一点,从main签出一条publishable分支,使用这个分支当防腐层的作用,只有确定上线的需求才会合到这个分支。

第二,从刚签出的publishable分支签出一条迭代分支,在敏捷开发的一个版本迭代功能需求,全部都会合到这个分支里。

第三,从刚签出的迭代分支,签出自己开发的功能分支,功能分支开发完成后合到迭代分支上面一起上环境测。

如果有紧急的生产bug需要处理,则是从publishable拉hotfix新分支修改,然后hotfix合到预生产测试。

如果要上生产,则是先将对应分支先合到pubulishable,再确认,然后publishable再合到main。

其实跟dev-pre-main-release这种有共通之处,只不过充当防腐层的分支换了个名字,毕竟在分支管理的策略上其实来来回回也就那么几个操作。但是还有种上家使用的分支策略可以推荐给大家

较严谨的策略

这种策略就是维护一个长期分支 release,流程大概为:

从release拉出新分支,基于上一个已打出的版本,判断更新重要性增加版本,如:2.0.1 -> 2.0.2/2.1.0 等,使用三段式版本,大家都在这个版本分支上开发。

测试预生产和生产也都使用版本分支上环境,上生产时会合一份进release。

因为这种策略基本只是用一个分支,所以对于团队对每个迭代的工作量把控要求很高、不能有很多需求变化,但也最大程度避免了合并的问题,即使有冲突也会第一时间解决,合并出了问题每次上环境都会极快暴露并修复。

总结

那么可以稍微比较一下:

如果团队较小,项目不大,那么直接传统策略就好了,一般也碰不上冲突。就开发工期长变化大的时候开分支都行。

如果团队较大,对于项目开发的需求不明确,时常有部分需求先上或不上的情况,那么就用适应变化的敏捷策略。

如果对项目开发需求很清晰,工期也把控的准,对外交付可以版本迭代的形式,那么更推荐严谨的敏捷策略。

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

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

相关文章

[pytorch] --- pytorch基础之模型验证套路

利用已经训练好的模型,拿出训练集中的部分数据进行测试 下面给出完整的示例代码: # -*- coding: utf-8 -*- # 作者:小土堆 # 公众号:土堆碎念 import torch import torchvision from PIL import Image from torch import nnimage…

游戏行业社招上岸指南

鉴于游戏行业的蓬勃发展,游戏领域的各大头部企业每年仍然有大量用人需求。即将到来的“金九银十”可谓是招聘者与应聘者的双向奔赴。 然而除了校招之外,社招同样是秋招中不可忽视的组成部分。因此,这份社招求职指南也终于千呼万唤始出来&…

FPGA第 9 篇,Verilog 中的关键字和基数

前言 在 Verilog 中,关键字(Keywords)和基数(Radix)是语言的重要组成部分,它们有助于描述和定义硬件设计。上期分享了 Verilog 的基本使用,以及数据类型、逻辑值和算数运算符的简单应用&#x…

服务器安装pytorch-阿里云-centos7

原文阅读:【巨人肩膀社区专栏分享】服务器安装pytorch-阿里云-centos7 1、创建一个虚拟环境 conda create -n pytorch python3.10 安装成功:   但是使用上面的命令会失败(疑问?&#xf…

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录 官网简介支持多种协议无插件浏览器访问配置和管理应用场景 Podman 部署 Apache Guacamole拉取 docker 镜像docker-compose.yml部署 PostgreSQL生成 initdb.sql 脚本部署 guacamole Guacamole 基本用法配置 VNC 连接 Mac 电脑开启自带的 VNC 服务 官网 https://guacam…

编程式路由跳转

点击左侧的导航栏,会跳转到相应的页面。可以在导航栏上定义一个点击事件,在vue-router中解构useRouter,把useRouter赋给router,使用***router.push()***就可以实现编程式路由跳转。 路由跳转有:to,push,replace push模式在浏览器上有历史记录&#xff…

【华为】测试工程师面试题汇总,你可知道华为的高薪技术岗有多香~

华为一直是求职者重点投递的热门企业,面对丰厚的薪资福利,无数985、211的学子挤破脑袋都想占据一席之地。 华为2021年发放工资、薪金及其他福利方面的费用达1371亿元人民币,按华为19.5万员工计算,华为员工人均年薪为70.3万&#…

[每日一题]3174. 清除数字

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

Vue Router 入门指南:基础配置、路由守卫与动态路由

Vue Router 入门指南:基础配置、路由守卫与动态路由 简介: Vue Router 是 Vue.js 官方的路由管理工具,用于在 Vue 应用中实现页面导航。掌握 Vue Router 的基本配置、路由守卫以及动态路由和懒加载是构建复杂 Vue 应用的基础。本文将详细介绍…

web前端-HTML标签

一、HTML语法规范 1.基本语法概述 &#xff08;1&#xff09;HTML标签是由尖括号包围的关键词&#xff0c;例如<html> &#xff08;2&#xff09;HTML标签通常是成对出现的,例始<html>和</html>&#xff0c;我们称为双标签。标签对中的第一个标签是开始标…

STM32(一)简介

一、stm32简介 1.外设接口 通过程序配置外设来完成功能 2.系统结构 3.引脚定义 4.启动配置 5.最小系统电路

解决:axios 请求头url传参数组时发生400错误

一、前言 axios封装的网络请求&#xff0c;url传参时&#xff0c;数组作为参数传递&#xff0c;发生400错误请求时数组参数转url会保留 [] 二、原因 RFC3986&#xff1a;除了 数字 字母 -_.~ 不会被转义&#xff0c;其他字符都会被以百分号&#xff08;%&#xff09;后跟两位…

QT:动态库与静态库的生成和使用

目录 一.动态库和静态库 1.动态链接&#xff08;Dynamic Linking&#xff09; 2.静态链接&#xff08;Static Linking&#xff09; 3.选择依据 二.库的创建 1.新建文件和项目中&#xff0c;选择Library中C库 2.新建一个名为libtest库 3.打印一个qDebug&#xff0c;用于…

PCA数据降维技术详解

在数据分析和机器学习的世界里&#xff0c;维度灾难是一个不可忽视的问题。随着数据维度的增加&#xff0c;计算量急剧上升&#xff0c;模型复杂度变高&#xff0c;同时可能引入噪声和冗余信息&#xff0c;影响模型的性能和解释性。主成分分析&#xff08;Principal Component …

第六篇——黄金分割:毕达哥拉斯如何连接数学和美学?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 人眼看到的美的东西&#xff0c;都可以从数学这个抽象的学科中得到明确的…

网页打印模板解析源码--SAAS本地化及未来之窗行业应用跨平台架构

一、打印模板解析 /* ///cyberwin_offline_database_printtemp.js未来之窗打印模板解析技术 2024-09 */ class CyberWin_Database_printtemp_KV {constructor() {this.data {};this.line_count 0 ;}解析(数据) {// this.data[key] value;this.line_count 0 ;this.data {}…

生日(仅粉丝可见,生日是9月6日,提前一天发的)

祝我自己生日快乐&#xff01; 感谢大家的陪伴与支持&#xff0c;以后我会努力做作品的&#xff01; &#xff08;累谁也不能累自己&#xff0c;所以我打算放3天假&#xff0c;反正延迟开学&#xff0c;先玩了来再去上学&#xff01;&#xff09;

数据库超时排查

背景&#xff1a; 项目是用的springboot&#xff0c;连接池用的是hikaricp&#xff0c;且数据库连接做了LB配置&#xff0c;之前就是经常会有数据库出现问题&#xff0c;专家给到的解决方案。 数据连接io超时报错&#xff0c;排查了当时数据库各项指标都无显示异常&#xff0c;…

基于SA-BP模拟退火算法优化BP神经网络实现数据预测Python实现

在数据分析和机器学习领域&#xff0c;时间序列预测和多输入单输出系统的预测是重要且复杂的问题。传统的BP&#xff08;反向传播&#xff09;神经网络虽然具有强大的非线性函数逼近能力&#xff0c;但在处理这些问题时容易陷入局部极小值、训练速度慢以及过拟合等问题。为了克…

【读书笔记-《30天自制操作系统》-15】Day16

本篇内容继续多任务的讲解。上一篇中实现了两个任务之间的自动切换&#xff0c;但还不够通用&#xff0c;这里将其优化为多个任务之间的切换。接着引入了任务休眠的概念与休眠的程序实现。最后介绍了任务的优先级&#xff0c;一种用切换时间的长短来衡量&#xff0c;一种用Task…