基于gitlab适用于版本发布的git-flow团队开发协作规范

高效的Gitlab Flow最佳实践 三种工作流程,有一个共同点:都采用"功能驱动式开发"(Feature-driven development,简称FDD)。 阅读详情
🌈慢慢的公司内部的项目逐渐增多,并且前期项目的版本发布相对来说比较频繁,为了更好的进行团队开发,定义了一套适用于版本发布的git-flow协作规范,我大概整理了一下,大家可以借鉴一下。

名词解释

  • LTS版本:Long Term Support长期支持版本,简称LTS。

  • MR/PR:是Merge Request/Pull Request,我们常说的提PR的意思是开发人员在某个分支功能开发完了,需要发送一个请求,请求将某个源分支代码合并到目标分支,这个过程为了让项目组长/负责人进行code review(代码审查),check没有问题之后允许合并。

分支规范

一共拥有以下几个(种)branch:

分支

描述

master

master上的都是production-ready的stable的代码

develop

作为开发的主分支, 所有的merge操作都应该先合并到develop分支,再定期merge到master 发版

release-xxx

LTS版本需要有独立的branch,以作为后续(万一)hotfix使用,精确到minor version,如release-v1.2,为长期保留的分支。

feature/xxx

所有新的feature(如新功能、性能优化)都应当先checkout到一个新的feature分支开发,原则上必须且只能merge到develop分支

bugfix/xxx

bug的修复分支,原则上必须且只能merge到develop分支

test/xxx

test分支主要做以下三件事:1. 增加unit test;2. 修改仓库级别配置文件(如.gitlab-ci.yml);3. 用来承载一些一次性的测试(最好不合并入develop)

hotfix/xxx

用来发布hotfix的分支,大多是用于承载线上比较紧急的bug修复

release/xxx

用来做发版工作(如更新版本号,bugfix)的分支,还有一个作用是freeze feature, 不允许合入feature,只允许合入bugfix

协作流程

开发流程

  1. 首先,确认自己在develop分支上,基于开发分支切一个功能分支出来;

  1. git checkout -b feature/your_feature;

  1. 开发完成后,push到origin;

  1. 提pr(如果是性能优化,请在description中附带上benchcmp的结果),target branch为develop,并勾选最下方两个选项:

  1. 等待review通过,通过后点击merge,请再次确认squash和delete branch被勾选:

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge:

7.done(完成)

bugfix 流程

develop上的bugfix
  1. 首先,确认自己在develop分支上;

  1. git checkout -b bugfix/your_bugfix;

  1. 开发完成后,push到origin;

  1. 提mr,target branch为develop,并如开发流程一样勾选最下方两个选项;

  1. 等待review通过,通过后点击merge,请再次确认squash和delete branch被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. done(完成)。

release/xxx上的bugfix

这里不需要直接merge回develop是因为release/xxx最终会merge回develop。

  1. 首先,确认自己在release/vX.Y.Z分支上;

  1. git checkout -b bugfix/your_bugfix;

  1. 开发完成后,push到origin;

  1. 提mr,target branch为release/vX.Y.Z,并如开发流程一样勾选最下方两个选项;

  1. 等待review通过,通过后点击merge,请再次确认squash和delete branch被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. done(完成)。

hotfix 流程

需要merge到develop
  1. 按照 普通bugfix流程 完成bug修复,记得要更新代码中的版本号(为了防止merge到master后忘记 merge回develop);

  1. 切换到master分支上;

  1. git checkout -b hotfix/your_hotfix;

  1. cherry-pick bugfix的commit;

  1. 检查无误后,push到origin;

  1. 提mr,target branch为master,并如开发流程一样勾选最下方两个选项;

  1. 等待review通过,通过后点击merge,请再次确认squash和delete branch被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. 切换到master分支上,打一个新的tag;

  1. done(完成)。

仅需要merge到master

适用于需要修复的bug在develop分支上已不存在的情况。

版本号的更新不需要同步到develop,在下次merge的时候解决冲突即可。

  1. 首先,确认自己在master分支上;

  1. git checkout -b hotfix/your_hotfix;

  1. 修复完成后,新增一个独立的commit,更新代码中的版本号,push到origin;

  1. 提mr,target branch为master,并如开发流程一样勾选最下方两个选项;

  1. 等待review通过,通过后点击 merge,请再次确认squash和delete branch被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. 切换到master分支上,打一个新的tag;

  1. 将第三步中更新版本号的独立的commit cherry-pick到develop分支上;

  1. done(完成)。

需要merge到LTS release branch
  1. 根据情况,完成需要merge到develop或者仅需要merge到master中的一个;

  1. 切换到release-vX.Y.Z分支上(待修复的分支);

  1. git checkout -b hotfix/your_hotfix;

  1. cherry-pick hotfix的commit;

  1. 更新代码中版本号,检查无误后,push到origin;

  1. 提mr,target branch为release-vX.Y,并如开发流程一样勾选最下方两个选项;

  1. 等待review通过,通过后点击merge,请再次确认squash和delete branch被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. 切换到release-vX.Y.Z分支上,打一个tag;

  1. done(完成)。

发版流程

发版流程比较特殊,和其它流程有较大区别,请注意细节。

这么做的原因是,如果先把release branch merge到develop分支上,再将develop分支merge进master 的话,可能会带上预料之外的commit(在整理release的时候有新的mr被merge到develop)。

  1. 首先,确认自己在develop分支上;

  1. git checkout -b release/vX.Y.Z;

  1. 做一些发版需要的工作(如更新版本号等);

  1. 完成后,push到origin;

  1. 提mr,target branch为master,不勾选 suqash 和 remove source branch;

  1. 等待review通过,通过后点击merge,请再次确认 squash 和 delete branch 未被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. 切换到master,打一个vX.Y.Z的tag。

  1. 再提一个mr,target branch为develop,不勾选 suqash 和 remove source branch;

  1. 等待review通过,通过后点击 merge,请再次确认 squash 和 delete branch 未被勾选;

  1. 如果merge request有description,可以点击Modify commit message并点击最下方的include description,然后再点击merge;

  1. done(完成)。

总结

实际上,每个公司的团队协作gitflow可能都不太一样,甚至有些小公司没有这方面的多人协作管理,然而我仅仅总结了以往公司已经借鉴的Git的gitflow规范得出以上内容
高效团队的gitlab flow最佳实践 当前git是大部分开发团队的首选版本管理工具,一个好的流程规范可以让大家有效地合作,像流水线一样有条不紊地进行团队协作。 业界包含三种flow: Git flow Github flow Gitlab flow 下面我们先来分析,然后再基于gitlab flow来设计一个适合我们团队的git规范。 阅读详情

相关推荐

Git超实用管理框架——Git Flow、GitHub Flow、GitLab Flow工作流程详解

之前一直在用git,但仅仅只是在自己的分支push和pull,用的也是GUI来提交,没有想那么多,可是突然称为一个管理者的时候发现git项目管理还是很重要的,对于Git常用命令是个程序员都不用多说什么,大家肯定信手拈来,但对于技术团队,还是需要用较为规范的 Git操作流程。 Git最重要的概念就是分支(fork),而操作流程的复杂度也取决于分支的个数和提交的复杂度。最大而全的框架就是Git Flow了,分支较多,非常适用于版本发布的工作流程。但不太适合持续发布(代码部署非常频繁)的开发场景。所以GitHu

Trisyp的博客 3013

GitLab 工作流介绍(GitLab Flow)

先上官方文档链接: GitLab Flow

纠缠AI的亮子 3万+

3. 代码管理-Git 工作流程

GitFlow 是一种 Git 工作流,是基于分支模型的工作流程规范,这个工作流程围绕着project的发布(release)定义了分支模型的使用。它是团队成员遵守的一种代码管理方案 ,使得软件开发过程更加清晰和有序。

princemilo的博客 772

GitLab flow工作流及其使用

Git flow及其问题GitHub flow是一个更简单的选择使用GitLab flow的生产分支环境通过GitLab flow分支使用GitLab flow发布分支使用GitLab flow合并/拉取请求使用GitLab flow进行问题跟踪链接和关闭合并请求中的问题用rebase压缩提交减少功能分支中的合并提交经常投入并频繁推动如何写一个好的提交信息合并前进行测试使用功能分支Git flow及其问题GitHub flow是一个更简单的选择因为Git flow过于复杂,所以GitHub创建了一个更简单的

niwoxiangyu的博客 2414

gitlib安装、 团队 Git 协作完整教程(企业级标准流程)

最精简的一句话主分支不写代码,每人一条功能分支,每天同步,完成提交合并。

雪的季节 308

如何用 Git 打造高效的团队协作流程:从版本控制到协作管理的全解析

本文系统介绍了如何利用Git打造高效的团队协作流程。首先回顾了Git基础操作,包括安装配置、仓库管理、分支操作和冲突解决。随后分析了团队协作面临的挑战,如多人开发管理、持续集成等问题。重点阐述了三种主流Git工作流:Git Flow的严格分支管理、GitHub Flow的轻量级PR协作、GitLab Flow的环境驱动部署。最后提出了提升协作效率的关键实践,包括代码审查机制、版本标签管理、CI/CD集成和Git Hooks质量控制。通过合理选择工作流并规范开发流程,团队可以显著提高生产力,实现高质量的持续交

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 835

多个前端项目放在一个git好还是_前端工作流

没有规矩不成方圆,如果一个项目只有你一个人在维护,那么你不需要担心很多问题,因为你对它心知肚明,但同时一个人的力量无法支撑起来大型项目。更多时候,我们需要与其他人合作,共同把项目推进,这意味着我们需要牺牲彼此的一些“自由”,在一些约束框架下进行合作,这就是我今天要提到的工作流。目前比较流行的工作流规范有:github-flowgitlab-flowgit-flow时间线:git-flow --&...

weixin_39765869的博客 754

Git 分支管理策略对比:Git Flow vs GitHub Flow vs GitLab Flow 的 5 个核心差异

本文深度对比了Git Flow、GitHub Flow和GitLab Flow三种主流分支管理策略的5个核心差异,包括长期分支结构、功能开发流程、发布模式、团队规模适配性和CI/CD集成复杂度。通过详细分析各策略的优缺点及适用场景,为开发者提供多人协作环境下的最佳分支管理实践指南,帮助团队提升开发效率和代码质量。

civtsbiqr522632413的博客 443

【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚

从为什么需要企业级开发模型讲起,深入 Git Flow / GitHub Flow / GitLab Flow 三大经典模型的原理与对比,再到发版流程规范、Code Owner 制度、事故应急回滚,最后用大厂发版流程实战把所有知识串起来。

分享 AI 时代程序员的进阶之路:大模型应用、AI 编程工具实战,同时沉淀 C / Linux 底层技术笔记。与君共赴,万里征途。 2528

PyCharm启动报错急救指南:3步定位.vmoptions文件位置(Win/Mac路径详解)

本文针对PyCharm启动失败问题,提供了一份详细的急救指南。核心在于精准定位并修复关键的.vmoptions配置文件。文章通过三步法详解了在Windows和macOS系统上查找该文件的具体路径,并分析了因新旧版本冲突、破解补丁残留或参数设置错误导致启动失败的常见场景及解决办法,帮助开发者快速恢复IDE的正常工作。

weixin_28835789的博客 704

C++和蓝图1:Unreal Engine 中 C++ 与蓝图的桥梁

摘要: 本文介绍了Unreal Engine(UE)中C++与蓝图可视化脚本的结合机制,重点解析了宏系统(UCLASS、UPROPERTY、UFUNCTION)如何实现代码与蓝图的交互。相比Unity的纯C#脚本模式,UE的双轨制开发允许程序员用C++处理核心逻辑,同时通过蓝图让非程序员快速迭代。文章对比了两大引擎的编程范式差异,指出UE的反射系统和宏标记提供了更精细的控制,并给出了从Unity迁移到UE的具体思路。核心在于理解UE的混合编程优势:C++保证性能,蓝图提升开发效率,二者通过宏系统无缝协作。

qq_46348216的博客 1409

Git团队协作实战:从Git Flow到GitLab Flow的平滑迁移指南(含CI/CD配置)

本文详细介绍了从Git Flow迁移到GitLab Flow的实战指南,包括分支策略优化、CI/CD配置及团队协作效率提升。通过简化分支模型和深度集成CI/CD,GitLab Flow显著缩短发布周期并降低合并冲突,特别适合中小型团队快速迭代开发场景。

agile9scrum的博客 1071

森林冰火人html源码,森林冰火人单人版(源码)

【实例简介】java小游戏——森林冰火人,单人游戏, 实现人物行走,跳跃,吃水晶,具有计时功能,积分功能,倒计时结束游戏失败。【实例截图】【核心代码】森林冰火人单人版├── bin│ ├── game│ │ ├── Help.class│ │ ├── Logon.class│ │ ├── Main.class│ │ ├── Mykey.class│ │ ...

weixin_42507981的博客 6204

Git分支管理完全攻略:如何高效使用分支进行团队协作

Git作为当下最流行的分布式版本控制系统,其强大的分支管理功能是支持团队高效协作的核心。本文将从基础操作到高级技巧,全面讲解如何利用Git分支实现流畅的团队开发流程,帮助新手快速掌握分支管理的精髓。 ## 一、Git分支基础:理解分支的本质 在Git中,分支本质上是指向提交历史的轻量级指针。通过分支,开发者可以在不影响主线开发的前提下进行功能开发、bug修复等工作。Git的分支模型为团队协作提

gitblog_00095的博客 887

SystemVue 链路预算、仿真分析步骤

使用SystemVue进行链路预算、频谱分析等,相对ADS更全面。

BeCourageable的博客 3837

点云配准SIFT+SI+RANSAC+ICP

Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。

点云兔子的博客 561

Git,Git Flow,GitLab使用指南

高效利用一次蹲坑时间,看看如何使用Git Flow进行高效开发,什么才是Git提交的正确姿势,怎样使用GitLab进行Code Review: 使用Git Flow高效开发; Git提交正确姿势,Commit message编写指南; 使用GitLab进行团队内的Code Review; 使用Git Flow进行高效开发 在工作环境中,绕不开效率一词,由于任何一次版本迭代,

dotNET跨平台 1555

[deprecated]第四章:TTM分析: 4.2.1 存储分配ttm_bo_validate功能实现分析

ttm_bo_validate是TTM框架中负责验证和调整BufferObject物理内存分配的核心函数,主要用于显存管理。该函数通过placement参数判断BO是否需要迁移或重新分配资源,完成内存分配、迁移及缓存策略调整等操作。实现流程包括资源释放、兼容性检查、迁移保护、新资源分配、迁移实现等步骤,支持多跳迁移和临时缓冲区。典型应用于显存溢出迁移、缓存策略调整、驱动初始化等场景,确保BO始终处于预期状态。

图形/计算GPU的驱动与虚拟化技术分享园地 849

终极指南:Git Flow vs GitHub Flow vs GitLab Flow 版本控制最佳实践

在软件开发中,选择合适的版本控制工作流对项目成功至关重要。GitHub推荐项目精选(awesome-python-applications)作为一个收集了426个优秀Python开源项目的资源库,展示了各种版本控制策略的实际应用。本文将深入比较Git Flow、GitHub Flow和GitLab Flow三种主流工作流,帮助开发团队找到最适合自己的版本控制方案。 [![Python版本控制工作

gitblog_00590的博客 918

【FastDDS】Layer DDS之Subscriber ( 09-Accessing received data)

Fast DDS提供了多种接收数据访问方式:通过读取(read)或提取(take)操作获取数据,其中提取会移除数据而读取保留数据。应用程序可通过序列高效借用接收队列内存,但需及时归还。数据处理时需检查SampleInfo的有效性,可通过监听器回调或等待集机制异步获取数据。等待集允许线程专门等待新数据到达,通过条件触发和超时控制实现可靠的数据接收处理。

Ray Home 863

RK3568 Android14 移远GNSS卫星导航模组LC760Z GPS北斗定位模块调试

Rockchip RK3568 作为一款高性能、低功耗的国产SoC,被广泛应用于工业网关、车载中控和智能手持终端等领域。在这些应用场景中,位置服务(Location Service) 往往是不可或缺的功能。本文将详细记录如何集成GPS模组到 RK3568 开发板上,通过 UART(串口)接口集成通用的 GPS 模块(如 移远LC760Z 或 EC20 4G 模块自带的 GPS 功能也差不多),并实现数据的解析与上层应用对接。

qq_33427070的博客 1414

Git团队协作终极指南:如何选择适合你团队的工作流程

Git版本控制系统是现代软件开发团队协作的核心工具,但如何制定一套高效的Git团队协作规范却困扰着许多开发者。本文将为你提供一份完整的Git团队协作指南,帮助你选择最适合团队的工作流程,提升团队协作效率。🚀 ## 为什么Git团队协作规范如此重要? 在团队开发中,统一的Git协作规范能够显著提升代码质量、简化代码审查流程、减少合并冲突,并提高团队的整体生产力。一个良好的Git工作流程能够帮助

gitblog_00077的博客 973

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【保姆级喂饭教程】GitLab创建用户规范,分支开发规范,提交日志规范

Git 是一个分布式版本控制系统,用于管理和跟踪代码或文件的变更。是软件团队进行代码开发管理的必要工具。GitHub、GitLab 是一个基于 Web 的 Git 仓库,由于 GitHub 的私有仓库是收费的,而 GitLab 是开源的,所以小型团队一般选择自己部署一个 GitLab。为了更好的团队使用,这里梳理下创建用户规范,分支开发规范,提交日志规范,仅适用于小型团队。

AlienProgrammer的博客 2345

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Bruno团队协作:Git分支合并策略

你是否曾经遇到过这样的场景:团队中多个开发人员同时修改API测试集合,结果导致冲突频发、版本混乱?或者因为缺乏规范的Git分支管理策略,使得API测试的版本控制变得一团糟? Bruno作为开源的API探索与测试IDE,其最大的优势之一就是**原生支持Git版本控制**。但仅仅使用Git还不够,你需要一套科学的分支合并策略来确保团队协作的高效与稳定。 ## 读完本文你能得到什么 - ???? Br...

gitblog_00547的博客 654

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 纯干货,不愧是阿里顶配版Spring Security笔记,面面俱到太全了!
下一篇: 总览 Java 容器--集合框架的体系结构
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值