说到分支管理模型,令人最为熟悉的莫过于TrunkBased 和 GitFlow。

TrunkBased 模型是持续集成思想所崇尚的工作方式,它由单个master分支和许多release分支组成,每个release分支在特定版本的提交点上从master分支创建出来,用来进行上线部署和 Hotfix。在 TrunkBased 模式中,没有显性的feature分支。

GitFlow 模型是若干模式的集大成者,包含一个master分支、一个develop分支、许多的feature分支、许多的release分支和 Hotfix 分支,以及许多繁琐的合并规则。

基于这两种模型,演变出了很多的新模型,而阿里的AoneFlow,它基本上兼顾了 TrunkBased 的“易于持续集成”和 GitFlow 的“易于管理需求”特点,同时规避掉 GitFlow 的那些繁文缛节。

AoneFlow 只使用三种分支类型:master分支、feature分支、release分支,以及三条基本规则。

规则一,开始工作前,从master创建feature分支。

从代表最新已发布版本的master分支上创建一个通常以feature/前缀命名的特性分支,然后在这个分支上提交代码修改。也就是说,每个工作项(可以是一个人完成,或是多个人协作完成)对应一个特性分支,所有的修改都不允许直接提交到master分支。

规则二,通过合并feature分支,形成release分支。

从master分支上拉出一条新分支,将所有本次要集成或发布的feature分支依次合并过去,从而得到release分支。release分支通常以release/前缀命名。

规则三,发布到线上正式环境后,合并相应的release分支到master分支,在master分支上添加tag,同时删除该release分支关联的feature分支。

为了避免在代码仓库里堆积大量历史上的feature分支,还应该清理掉已经上线部分feature分支。如果要回溯历史版本,只需在master分支上找到相应的版本的tag即可。

除了基本规则,还有一些实际操作中不成文的技巧。比如上线后的Hotfix,正常的处理方法应该是,创建一条新的release分支,对应线上环境(相当于Hotfix分支),同时为这个分支创建临时流水线,以保障必要的发布前检查和冒烟测试能够自动执行。

其实还有一种简便方法是,将线上正式环境对应的release分支上关联的feature分支全部清退掉,在这个release分支上直接进行修改,改完利用现成的流水线自动发布。

如果非得修一个历史版本的Bug怎么办呢?那就老老实实地在master分支找到版本tag位置,然后从那个位置创建 Hotfix分支。

所谓模型,在不同的开发团队,不同的文化,不同的项目背景情况下都有可能需要进行适当的裁剪或扩充。

开发分支管理模型之阿里AoneFlow的更多相关文章

  1. git flow开发分支管理模型

    Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化 ...

  2. GIT分支管理模型

    GIT分支管理模型 link: git-branching-model 主分支(Main branches) 项目两个常驻分支: master 主干分支(锁定),仅用于发布新版本,平时不能在上面干活, ...

  3. Git开发分支管理

    远程仓库有master和dev分支的情况 1. 克隆代码 git clone https://somewhere.com/master-dev.git 2. 查看所有分支 git branch --a ...

  4. Git 分支管理策略汇总

    原文链接: Git 分支管理策略 最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码? 我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的 ...

  5. 引入git flow分支管理

    git flow是Vincent Driessen提出了一个分支管理的策略,非常值得借鉴.它可以使得版本库的演进保持简洁,主干清晰,各个分支各司其职.井井有条. 先看下Vincent Driessen ...

  6. git flow分支管理

    阅读目录 两种核心分支 三种临时分支 Git Flow流程示例代码 Git Flow工具 分支命名规范 总结 git flow是Vincent Driessen提出了一个分支管理的策略,非常值得借鉴. ...

  7. Git分支管理介绍

    分支管理 软件的版本控制以及分支管理贯穿于整个软件产品的生命周期,日常的项目管理对于开发团队能否有节奏且顺利的交付软件也很重要.本分支管理和版本控制规范主要分为3个部分,即分支管理规范.版本号规范.需 ...

  8. 版本分支管理标准 - Trunk Based Development 主干开发模型

    之前分享过<版本分支管理标准 - Git Flow>,不过在实际使用过程中, 因为其有一定的复杂度,使用起来较为繁琐,所以一些人员较少的团队并不会使用这个方案. 在这基础上,一些新的分支管 ...

  9. 项目版本与分支管理之阿里AoneFlow模式分析

    前言 在我前期的项目管理的经验中,一个项目需要维护多个产品及多个版本,这给版本与分支的管理增加了难度.前期没有重视,使得分支太多太乱,版本也没记录好,引发了很多的问题.在多种分支与版本的管理模式下,最 ...

随机推荐

  1. ubuntu 安装LAMP web 服务器, phpmyadmin 安装后无法打开解决

    安装方法: http://blog.chinaunix.net/uid-26495963-id-3173291.html 在上述文档中需要增加apache 支持mysql 功能. apt-get in ...

  2. Codeforces_442_A_枚举

    http://codeforces.com/problemset/problem/442/A 想想成5*5的图,一共能划10条线,枚举2^10次即可. 判断每种情况是否符合条件的方法,若存在点,被线穿 ...

  3. 《剑指Offer》第二章(一)题3-8

    为春招实习做准备,记录一下<剑指Offer>里面的面试题 第二章 面试题3:数组之中的重复数字. 这个题吧,虽然不难,但是不知道为什么就是看了很久,可能很久没有做算法题了.最后面一句话说的 ...

  4. Linux 查看磁盘容量、查找大文件、查找大目录

    Linux 查看磁盘容量.查找大文件.查找大目录 磁盘统计 查看磁盘使用情况 df -h 文件统计 查找/home 目录下大于800M的文件 find /home -type f -size +800 ...

  5. 性能测试监控平台Grafana的使用

    Grafana的监控是基于数据库的,通过插件获取到服务器性能并存储到数据库中,然后使用Grafana连接数据库形成可视化的图表.本篇给大家介绍对服务器的性能的监控,下一篇会介绍对于mysql数据库的监 ...

  6. [Linux]命令返回值以及错误对照表

    Linux执行完命令之后默认会有一个返回值 # ls app backupconfig.json Doc manage.py __pycache__ settings.py # echo $? 0 错 ...

  7. PYTHON 学习笔记4 模块的使用、基本IO 写入读取、JSON序列化

    前言 若在之前写代码的方式中,从Python 解释器进入.退出后再次进入,其定义的变量.函数等都会丢失.为了解决这个为,我们需要将需要的函数.以及定义的变量等都写入一个文件当中.这个文件就叫做脚本 随 ...

  8. vscode安装使用

    1.新建文件:cmd+n2.设置默认浏览器: https://blog.csdn.net/zSY_snake/article/details/83449571 3.view in browser不支持 ...

  9. Windows server 2012 出现大量无名已断开连接用户清楚办法

    打开cmd命令窗口,执行  taskkill /f /im winlogon.exe /t

  10. 【已解决】pyinstaller UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 110: invalid continuation byte

    转载自勤奋的小青蛙本文链接地址: [已解决]pyinstaller UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in positi ...