Git分支管理策略

Git分支管理策略:如何高效协作开发 在软件开发的团队协作中,多人同时对代码进行修改和开发是非常常见的情况。如果没有一个合理的分支管理策略,就会出现代码冲突频繁、版本混乱等问题,严重影响开发效率。本文的目的就是为开发者提供一套全面的Git分支管理策略,帮助团队在开发过程中实现高效协作。范围涵盖了常见的Git分支管理策略、具体的操作步骤、实际应用场景以及未来的发展趋势。本文首先会介绍Git分支管理的核心概念,包括分支的基本原理和不同类型分支的作用。 阅读详情

git branch的管理策略网上有不上文章,流传比较广泛的应该是阮一峰的Git分支管理策略,不过个人感觉这个策略过于简单,在实际的开发环节中,有很多情况不好处理。另一篇比较有名的文章则是:a-successful-git-branching-model 该文对于各分支的merge操作过于随意,会导致branch线十分繁琐,又过于复杂。这里总结一些个人在使用git管理代码仓库过程中的一点想法和思考,以及在实际开发过程采用的方法。

分支分类简介:

基于常见软件开发中场景,将所有分支归纳为三类:
  • 正式发布分支:
    • release branch
    • release_hotfix_xxxx branch
  • 开发分支:
    • develop (主) branch
    • develop_xxxx (feature) branch
  • 内测发布分支:
    • prepare branch (主) branch

开发阶段简介:

  1. 开发阶段:develop branch & develop_xxxx branch进行。
  2. 预发阶段:持续的merge develop to prepare branch,进行内测。
  3. 线上发布阶段:内测稳定“无问题”后,进入线上发布阶段,由发布owner merge prepare branch to release branch。注:线上发布阶段,prepare branch锁定不再更新。

正式发布分支:

release branch

release branch为正式发布分支,该branch HEAD保持同当前正式发布最新版本一致,每一个正式发布的版本都在release branch有唯一对应的tag。

  1. 在进入线上发布之前不允许直接push修改到release branch,进入线上发布之后仅允许从develop分支上cherry-pick commit。
  2. merge, cherry-pick操作只由本次发布owner操作,发布成功打tag。
  3. 进入线上发布的release branch如果测试出现重大bug,建议重新进入预发阶段,如果出现等级较低的bug,尽量在develop修复,通过cherry-pick将该笔修复合入release branch。(如果develop上无法复现,必须在release分支上修复的,允许在release branch修复,修复后,将该修改cherry-pick回develop branch)
  4. 线上发布阶段仅修bug,不加功能,如果需要加功能,重新进入开发阶段,或者预发阶段,本次线上发布操作中止。

release_hotfix_(version)_(xxxx) branch

hotfix branch为应对突发情况的发版,基于相应正式release branch基础,checkout一个hotfix branch进行相应修复后,基于该branch进行突发情况的紧急发布。

  1. 该分支只能基于release branch checkout,命名采用release_hotfix_vX.X.X(_feature)
  2. hotfix branch上新增的修复commit需同步cherry-pick到develop branch。
  3. hotfix branch不允许merge回release branch(参见release branch条目1)

思考:为什么hotfix branch不好merge会release branch?

内测发布分支:

内测发布分支作为内部提测使用的分支,隔离开发和内测发布分支,目的:不影响内部提测和开发人员的持续提交。

prepare branch
  1. prepare对应develop的内测分支。
  2. 任何情况下不允许直接push修改到prepare branch。
  3. prepare branch的更新只能通过develop branch merge更新。
  4. 内测发布分支的merge由内测发布owner操作。

思考:内测发布分支是否必要?

开发分支:

develop branch

develop branch为开发过程中的主干分支,是开发人员操作最多的分支。

  1. 小功能,小bug,独立模块的提交可以直接提交到develop branch。每笔的提交必须保证可build,可执行。同时需尽量保持模块功能独立,完整,版本单一,不破坏app功能的完整统一,无大问题。
  2. develop分支上提交的功能commit必须是本开发版需要发布的功能,后续版本的功能开发需求,采用单独拉出develop_feature branch进行开发。
  3. 提交冲突,需采用rebase合并,不允许采用merge(git pull默认方式)。

rebase和merge的区别:
略

develop_xxxx branch

大feature的模块开发,会破坏develop分支功能完整性,非本期开发需求的开发工作,需拉出单独的develop branch进行。

  1. branch命名采用develop_xxxx方式,xxxx代表开发feature。
  2. develop_xxxx branch只能基于develop branch checkout。
  3. develop_xxxx branch开发完成后通过git merge –no-ff(非fast-forward)合并回develop branch。
  4. develop_xxxx branch原则上不允许反向merge develop branch(develop to develop_xxxx)。
–no-ff和fast-forward的区别:

这里写图片描述
图片来自网络。

为什么不允许反向merge develop branch?

清晰,美观,好追溯

Git commits历史是如何做到如此清爽的?

feature branch一定要merge develop分支才能内测吗?
  1. feature branch的测试关注于单一模块功能。
  2. 只有当发现重大bug在develop分支修复,同时该bug影响到了feature分支的测试,可考虑合并develop分支。
  3. 当develop分支有基础库的大修改,而当前feature分支严重依赖该库,如果不进行合并,后续仍然有很多代码需要兼容该基础库,导致后续大部分代码的编写无生产意义时,可考虑合并develop分支。
如果develop_feature branch一定要merge develop分支才能测试,怎么办?
  1. 如果该feature由一个人单独开发,建议采用git rebase方式合并。(单独开发的功能合并分支尽量采用rebase,为保证减少合并冲突的难度,建议在开发过程中,以天为单位持续rebase develop branch)
  2. 如果该feature由多人开发,只能采用git merge进行合并。(尽量在一次merge完成,不要持续多次merge develop branch)
Git flow分支管理策略 文章目录Git flow分支管理策略Git flow分支管理策略[1] Master和Develop分支[2] Feature分支[3] Release分支[4] Hotfix分支参考文档 Git flow分支管理策略 Git flow分支管理策略 ​ Git flow分支管理策略是一种Git版本控制工作流(分支策略管理模型),规定了使用master分支来管理发布历史,用develop分支来作功能... 阅读详情

相关推荐

【无人机对抗】基于matlab无人机红蓝对抗仿真【含Matlab源码 4436期】

无人机红蓝对抗仿真 完整代码,包运行;可提供运行操作视频!适合小白!

Matlab3024528700的博客 1379

Git进阶之旅:分支管理策略

git stash 命令的作用是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈的内容。stash 中的内容不仅可以恢复到原先开发的分支,也可以恢复到其他任意分支上git stash 作用的范围包括工作区和暂存区的内容,也就是说没有提交的内容都会保存至堆栈中。

SOS_suyan的博客 1012

知识抽取框架OneKE

OneKE 中指令的格式采用了类 JSON 字符串的结构,本质上是一种字典类型的字符串。优化知识抽取的性能不仅能够强化模型对世界知识的理解和应用,还能够构建知识要素之间的跨领域的深度关联和依赖,这些都是大规模知识图谱构建的关键依赖。一直是知识图谱大规模落地的关键难题之一,因为真实世界的信息高度碎片化、非结构化,大语言模型在处理信息抽取任务时仍因抽取内容与自然语言表述之间的巨大差异导致效果不佳,自然语言文本信息表达中因隐式、长距离上下文关联存在较多的歧义、多义、隐喻等,给知识抽取任务带来较大的挑战。

qq_32907491的博客 3206

研发Owner的职责

概述 技术组长或者PMO,可能在同一个上线周期里,需要跟多个项目,有时候会跟不过来,这个时候可以指派一个owner,分担一些压力。 owner定义 owner是临时授予的小组长,负责主导某个项目某个端(后端或者前端)的整体工作。 owner具体职责,主要是关注技术侧的,非技术侧的,由PMO跟进。且这里说的owner,是指单端的owner,例如:后端侧owner,前端侧owner。 对内 ...

Sam_Deep_Thinking 1万+

QEMU+KVM实战:5分钟搞定Ubuntu 24.04虚拟机搭建(附性能优化技巧)

本文详细介绍了在Linux宿主机上使用QEMU和KVM快速搭建Ubuntu 24.04虚拟机的完整实战流程。内容涵盖从环境准备、核心组件解析到具体的安装命令,并重点分享了针对CPU、内存、存储I/O及网络性能的深度优化技巧,旨在帮助用户构建一个响应迅速、资源隔离良好的高性能虚拟化开发与测试环境。

j2k3l4的博客 753

不修改MMDetection源码使用自定义数据和模型

以目标检测为例,用非侵入式的模型和MMDetection数据的方法进行配置。也就是不改动MMDetection的任何源码或目录的条件下,使用自定义数据训练自定义模型。

Dlite的技术笔记 1341

git分支管理策略

                            git分支管理策略 1  总览     git 的分支整体预览图如下:      从上图可以看到主要包含下面几个分支:          master:git默认主分支(这里不作操作)。          stable:稳定分支,替代master,主要用来版本发布。          develop:日常...

酷道博客 1万+

基于 transformer、lstm、LSTM多特征的交通流量预测 完整数据代码 超全项目 本科硕士毕设卓卓有余

基于 transformer、lstm、LSTM多特征的交通流量预测 完整数据代码 超全项目 本科硕士毕设卓卓有余

4655

常用的git分支管理方法都在这了

git 分支关联最实用方法

小白目的博客 1万+

43、FMCW雷达高度计仿真

本文介绍了FMCW雷达高度计的波形级建模与仿真过程,重点模拟了着陆和倾斜两种飞行场景以评估其性能。通过结合高程数据和飞行轨迹构建雷达场景,使用自定义信号处理器分析IQ样本并估计高度。结果表明,该高度计在多数情况下满足性能要求,但也存在误差较大的点,提出了地面检测算法优化的潜在方向。

neovim7hacker的博客 135

【云原生技术】sonar的官方web接口,获取质量阀结果的接口

以下是一个示例思路,说明如何调用 SonarQube 的质量阀查询接口并在前端展示“哪些条件没过”。假设前端使用 AJAX 或 fetch 从后端接口拿到 SonarQube 返回的 JSON(或直接前端请求 SonarQube API),前端再把解析结果展示给用户。测试覆盖率 (Coverage) 当前仅有 60%,未满足最低 80% 的要求,需要补充测试或优化以提升覆盖率。接口),就会返回相应的质量阀状态信息;里使用它来查询当前质量阀(质量门)的状态。,你用它即可获取该次分析的质量阀状态。

weixin_46453070的博客 1279

Git分支管理策略推荐

后期迭代周期变短到1个月,推荐使用gitflow演化的分支管理策略。(关于分支策略选取详细解说请参考:分支策略) git-flow master分支: 长期可发布分支,uat验收测试将从该分支拉取代码。修复问题需要新启hotfix_xxx进行热修复进行PR。 release分支: 迭代可上线分支,st 测试环境将从该分支拉取代码。迭代任务完成后,将重组一个release分支来进行质量打磨。该分支严格上不再接受新特性,只做bugfix_xxx等内容 develop分支:最新的开发分支,dev集成环境从该分支拉

最爱下雨天 585

CesiumForUnreal实现地形等高线效果

CesiumForUnreal实现地形等高线效果

专注GIS开发 3437

Git 分支管理策略汇总

以上四种就是目前相对主流的分支管理策略,但没有哪一种策略是万能的。所以无论选择哪一种,都需要考虑团队的实际情况,以及项目的具体业务需求,适合自己的才是最好的。临时分支不应该存在太久,每个分支应尽量保持精简,用完即删工作流应该尽量简单,同时方便回滚工作流程应该符合我们的项目发布计划以上就是本文的全部内容,如果觉得还不错的话欢迎,转发和关注Git 分支管理策略与工作流程Git 分支管理策略总结一个完美的 Git 分支管理模型Git 工作流程Git 分支管理策略分支模型与主干开发。

AlwaysBeta 的专栏 4111

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【git分支管理策略】

随着开源软件和分布式版本控制系统(如 Git)的普及,分支策略已成为软件开发和项目管理中的重要概念。在本文中,我们将深入探讨 Git 中的分支策略,以及如何有效地使用它们来提高团队协作和项目管理效率。介绍git基本操作以及整合idea的git插件使用解读git分支的作用解读git flow分支管理策略掌握git的使用了解gitflow相关分支的命名和作用提示:以下是本篇文章正文内容,下面案例可供参考分支策略是指在版本控制系统中使用分支来管理代码更改的方法。

南 阳 的博客 1703

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

GIT分支管理策略

GIT分支管理策略

wu_Turbo的博客 881

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Git 分支管理策略与实践

Git 分支管理策略与实践

1158

Git Flow 分支管理策略

Git Flow 是一种流行的分支管理策略,由 Vincent Driessen 提出,旨在为团队协作提供清晰的分支结构和工作流程。它通过定义不同的分支角色,帮助团队高效地管理代码开发、测试、发布和维护。以下是 Git Flow 的核心概念和工作流程:主要分支master 分支:代表生产环境(production)的代码。仅在发布新版本时合并 develop 分支的内容。保持稳定,只有经过测试和验证的代码才能进入。develop 分支:代表开发环境(development)的代码。

qq_34952326的博客 925

【Git学习笔记】Git分支管理策略及其结构原理分析

哈喽,各位小伙伴大家好!今天开始我们就进入新的篇章——Git学习!。今天我们来讲一下Git初始及其结构原理分析。话不多说,我们进入正题!向大厂冲锋。

大白的编程日记. 1543

Git —— 分支管理策略

一、主分支Master 首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。 Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。 二、开发分支Develop 主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做Develop。 如果想正式对外发布,就在Master分支...

starter_____的博客 1261

git 分支管理策略_我的git管理策略

git 分支管理策略每个新的软件项目都需要一个适合各种需求的版本控制策略:(Every new software project requires a version control strategy that suits a variety of needs:) A locked down master branch that is always shippable to production ...

weixin_26729165的博客 486
上一篇: 叨逼叨
下一篇: Git cherry-pick后再merge出现一个“奇怪”的现象
voidreturn
博客等级 码龄10年 53粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值