git管理历险记

2024-09-05 10:36
文章标签 管理 git 历险记

本文主要是介绍git管理历险记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本篇文章主要是记录一下公司内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。

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

总结

那么可以稍微比较一下:

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

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

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

这篇关于git管理历险记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138720

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个