「研发部」GitFlow规范-升级版(二)

前言

上一篇文章简单整理过一次产研团队的GitFlow《Git 分支管理及Code Review 流程 (一)

GitFlow是一种流行的Git分支管理策略,它提供了一种结构化的方式来管理项目的开发和发布流程。以下是GitFlow规范的主要组成部分:

主要分支:

  • master:主分支,存储的是正式环境的代码,它是稳定并且可部署到生产环境的。此分支应该是只读的,不允许直接在上面进行开发。
  • develop:开发分支,所有新的功能开发都应该基于这个分支。它是master分支的副本,并且是集成测试的场所。

辅助分支:

  • feature:功能分支,用于开发新功能。每个功能都应该有一个自己的分支,它的命名规则可以是feature/*,比如feature/new-login。当功能开发完成并通过测试后,它会合并到develop分支。
  • release:预发布分支,用于准备新的生产版本。它基于develop分支创建,并且用于修复在预发布阶段发现的问题。它的命名规则可以是release/*,比如release/1.2.0。当预发布阶段结束后,它会合并到master和develop分支。
  • hotfix:热修复分支,用于修复生产环境中的紧急问题。它基于master分支创建,并且当问题修复后,它会合并到master和develop分支。它的命名规则可以是hotfix/*,比如hotfix/1.2.1。

工作流程:

  • 当开始一个新功能时,从develop分支创建一个新的feature分支。
  • 在feature分支上开发新功能,并通过单元测试。
  • 完成后,将feature分支合并到develop分支,并删除feature分支。
  • 当准备发布新版本时,从develop分支创建一个新的release分支。
  • 在release分支上进行集成测试,并修复发现的问题。
  • 完成后,将release分支合并到master和develop分支,并删除release分支。
  • 如果在生产环境中发现紧急问题,从master分支创建一个新的hotfix分支。
  • 在hotfix分支上修复问题,并通过测试。
  • 完成后,将hotfix分支合并到master和develop分支,并删除hotfix分支。

以上就是GitFlow规范的基本内容。这种策略通过明确每个分支的角色和生命周期,以及定义清晰的工作流程,有助于保持代码的整洁和可维护性,提高团队之间的协作效率。

结合以上&目前的产研团队的GitFlow规范进行整理

1、产研开发规范

1.1 规范目标

  • 确保业务需求所有上生产的代码均为测试过的代码
  • 确保上线分支代码不被遗漏
  • 开发流程规范化,合理化,便于管理

1.2 产研开发流程

如上图:

  • 虚线上方为开发流程,虚线下方为每个流程需要的产出,色块的不同代表负责人为对应的角色
  • 角色分为组长、产品、主R、开发、测试,分别用不同的色块代表

重要阶段必要参与人:

  • 需求评审:产品、主R、开发、测试,负责角色为产品
  • 设计评审:产品、组长、主R、开发、测试,负责角色为开发
  • 用例评审:测试、产品、开发,负责角色为测试
  • 冒烟:开发、测试、产品(建议),负责角色为开发
  • 值班观察:负责角色为主R,可安排对应开发值班

2、Git分支规范

2.1 测试分支

  • 【强制】命名:test-上线日期,示例:test-20221206
  • 【强制】由项目主R建立,并建立分支保护,保护规则:必须经过Code Review
  • 【强制】不允许直接推送代码至测试分支,必须通过合并,如产生冲突,在开发分支解决后再合并

2.2 开发分支

  • 【强制】命名:feature-JIRA编号,示例:feature-JIRA001,feature-OFFICE001
  • 【强制】由开发从 master 分支拉取创建

2.3 热修复分支

  • 【强制】命名:hotfix-JIRA编号,示例:hotfix-JIRA001
  • 【强制】必须从 master 分支拉取

2.4 master分支

  • 【强制】分支保护模式,必须通过Code Review 合并

3、效能平台使用规范

3.1 环境发布分支规范

3.1.1 现状

  • prod环境:取master / tag版本分值进行上线
  • release环境:取master / tag版本分值进行发布
  • uat环境:只能发布 hotfix*、master 分支
  • test环境:只能发布 master、dev* 分支
  • dev环境:只能发布 master、dev* 分支

3.1.2 修改

  • prod环境:只能发布master/tag版本分支封板代码
  • release环境:取master / tag版本分值进行发布
  • uat环境:只能发布hotfix*、master分支 ,临时支持test*分支
  • test环境:只能发布master、test*、hotfix*分支
  • dev环境:不限制

3.2 环境使用规范

  • dev环境:开发,团队开发同学统一使用。
  • test环境:测试,开发完统一合并该环境供测试团队同学进行冒烟测试。
  • uat环境:开发,预其他团队一对一环境,涉及到外部门合作的统一在该环境进行回归测试。
  • release环境:上线前的预生产环境,数据使用的跟生产数据一致,用真实数据进行测试的环境。
  • prod环境:生产环境,正式外部访问

3.3 遇到问题

  • 测试分支稳定性相对不高,如单独弄测试分支流程会比较复杂
  • 需要多套环境支持,可合并测试分支后一起测试
  • git项目权限问题,需要运维给组长、可以针对主R开通相关权限

4、总结

对比其他版本管理工具,GitFlow有哪些优势?

GitFlow是一种Git分支管理策略,它与其他版本管理工具相比具有以下优势:

  • 清晰的分工合作:GitFlow将开发过程分解为不同的分支,每个分支都有明确的职责,比如特性开发、发布准备和维护。这有助于团队成员之间更好地协作,避免代码冲突和混乱。
  • 稳定的发布流程:通过特定的分支(如Release和Master分支),GitFlow确保了每次发布都是经过测试和稳定的版本。这有助于提供高质量的软件,并减少生产环境中的问题。
  • 灵活的热修复:当生产环境中出现紧急问题时,GitFlow的Hotfix分支允许开发团队快速修复问题并发布,而不影响其他功能的开发。这有助于减少停机时间和维护成本。
  • 高效的版本管理:GitFlow让版本追踪更加明确,团队可以清楚地知道每个版本的功能和改动。这有助于回滚到以前的版本或比较不同版本之间的差异。
  • 强大的分支模型:GitFlow的分支模型非常灵活,支持多个并行开发流程,包括新功能开发、发布准备和修复生产问题等。这有助于提高开发效率和响应速度。
  • 广泛的适用性:GitFlow不仅适用于有计划发布周期的项目,还可以用于持续交付的DevOps最佳实践。这使得GitFlow成为各种规模和类型项目的理想选择。

需要注意的是,虽然GitFlow具有许多优势,但它并不是唯一正确的版本管理策略。在选择版本管理工具和方法时,团队应根据项目的具体需求和团队的工作方式做出决策。

相关推荐
言6661 小时前
要忽略前端依赖包node_modules的文件在目录下 git暂存区消失
git
徐小夕1 小时前
我们放弃了单Agent方案:HiCAD 3.0 用 Harness 做多Agent编排,把3D建模的准确率提升了30%
前端·算法·github
Java面试题总结1 小时前
MarkItDown 再次登顶GitHub榜
开发语言·c#·github
佛系豪豪吖2 小时前
AtomCode 部署流程与使用经验
笔记·chatgpt·github·ai编程·gitcode
胡小禾2 小时前
Git Worktree
git
程序员小羊!2 小时前
18 GIt
git
怣疯knight2 小时前
Git 本地分支关联远程分支 常用命令汇总
git
ANNENBERG3 小时前
git分支开发管理
git
坤坤藤椒牛肉面3 小时前
GIT的使用
git
w3296362713 小时前
使用 OpenCode 在 Windows 上加速安装 Playwright 的完整指南
windows·git