Git、GitHub、GitLab Flow,傻傻分不清?一图看懂各种分支管理模型
理论是灰色的,生命之树常青。
引言
任何一家公司乃至于一个小组织,只要有写代码的地方,就有代码版本管理的主场,初入职场,总会遇到第一个拦路虎 git
管理流程,但是每一个企业似乎都有自己的 git
管理流程,倘若我们能掌握常用的 git
分支管理模型,那么无论碰到什么样的 git
管理流程,只不过都是这些管理模型的衍生与简化而已。
背景
目前笔者所在的前端部门,技术栈是 React & RN
为主,Vue
为辅,也就是说 React
和 Vue
双栈共存,可以说是研发环境比较复杂了,运维部门也制定了相应的 git
管理模型,不过也是比较通用的,那么如何制定一个符合前端部门的 git
管理模型尤为重要,且不可与运维部门的管理模型相冲突,由此便诞生了此篇文章。
Git Flow
由著名大佬 Vincent Driessen 在《A successful Git branching model》一文中,提出影响深远的 git
代码管理模型,在现如今依然许多中大型企业在沿用,下面是他提出的流程图:
优点:分支管理严格,代码合并清晰,适合于中大型团队应用。
缺点:分支流程过多反而也是一种缺点
GitHub Flow
GitHub
于 2011 年创建,遵循以下 6 条原则:
master
分支永远是随时可部署发布的- 需求新增基于
master
分支,并创建一个语义化分支 - 定期推送本地分支到远端
- 合并到
master
需要提PR
PR
一旦经过code review
无误后即可合并到master
master
一旦接收到合并请求,即可立即部署发布
其大概的流程图如下:
图源 gaboesquivel.com
优点:分支足够简单,且符合人类思维逻辑,适用于持续发布场景
缺点:针对多版本产品线则不适用
GitLab Flow
GitLab
在 2014 年提出 11
条最佳实践,更多请点击这里,其相对 GitHub
增加了环境分支,且代码必须由上游
(master
)向下游
(staging
)发展,并且针对持续发布和版本发布都提出了相应的准则,下面是其大致流程图:
优点:git
提交历史更加清晰、简洁与易读
缺点:对开发人员的能力提出了更高的要求,当存在多产品线时,和 Git Flow
相比平分秋色
TrunkBased
研发团队只在 master
分支进行功能开发,当达到发布的条件时,直接迁出一个只读分支发布,只读分支顾名思义就是不接收任何新代码合并,以及在只读分支上进行修改;当研发人员相对较多时则可以使用可扩展版本
,增加了功能分支,但是功能分支不超过两三天则必须要合并到 master
分支,其大致的流程图如下:
优点:简单清晰,单兵作战最佳选择,适合维护后期超稳定的项目
缺点:不适用多版本共存的项目
OneFlow
Adam Ruka
于2017年提出,可以简单的理解为 Git Flow
的简化版本,除了 develop
开发分支和最新发布 master
分支,其余皆是临时分支,一旦开发完成即可删除临时分支,其中具体细则可查看这里,下面是其大致流程图:
优点:单一版本首选,git
提交历史简介清晰易读
缺点:不适合持续交付或持续部署的项目,也不适用多版本共存的项目
AoneFlow
由阿里巴巴技术专家林帆基于 TrunkBased
和 GitFlow
提出的一种新改进,其主要分为三种分支类型:主干分支、特性分支以及发布分支,并且提出了三个基本准则:
- 主干创建特性分支,且不允许合并回主干分支
- 合并特性分支,形成发布分支
- 发布到线上正式环境后,合并相应的发布分支到主干,在主干添加标签,同时删除该发布分支关联的特性分支
下面是其大致的流程图:
优点:灵活易用,通过组合生成分支往往可以实现多种高级玩法
缺点:复杂度稍高,如果没有配套的工具规范往往会出现“无效分支”的出现
总结
介绍了众多的分支管理模型,那么我们该如何挑选适合自己团队的方案呢?在这里制作了一个思维导航图,详情如下:
参考:
[1] a-successful-git-branching-model
[2] githubflow
[3] what-are-gitlab-flow-best-practices
[4] oneflow-a-git-branching-model-and-workflow
[5] 在阿里,我们如何管理代码分支?
Git、GitHub、GitLab Flow,傻傻分不清?一图看懂各种分支管理模型相关推荐
- 国防大学计算机学院,国防大学和国防科技大学是同一所学校吗?很多人傻傻都分不清!...
国防大学和国防科技大学,这两所大学名字相近,极易混淆,在很多网站搜索"国防大学录取分数线",出来的全是国防科技大学的的高考录取分数线,所以给广大考生带来了很大困惑,难道国防大学和国 ...
- 网关、路由器,傻傻分不清?进来就懂了
# 网关 又称网间连接器.协议转换器. 连接两个网络. 连接两种网络(如Lora网关,连接Lora网络和以太网.承担连接.转换重任) 网络的进出口,定义网络的边界.在设备中,网关是一个很重要的配置项, ...
- 【Git\GitHub\GitLab学习笔记】版本控制 Git 视频教程全集(62P)| 6 小时从入门到精通(P27-P41)
目录 P27-Git基本原理-Hash算法简介 P28-GIt版本数据管理机制 - P33-为了测试远程交互初始化本地库 P34-创建远程仓库 P35-在本地创建远程库地址别名 P40-协同开发时冲突 ...
- arcgis直方图工具在哪_这些分析工具都分不清?别说你懂数据分析!
举一个例子,铅笔.钢笔.圆珠笔.水彩笔.中性笔,它们的区别是什么?同理,spss.sas.excel .python.powerbi ,这些常见的数据分析工具有什么区别?很显然,这两个问题是有共性的. ...
- 汽车计算机控制电路按功能分,新手篇—轻松看懂汽车电路图(下)
第十四 节辅助电器 一.辅助电器概述 随着汽车电控技术在现代汽车上广泛的应用,汽车上安装的用电器越来越多,这些用电器除了应用于发动机控制外,绝大部分为汽车辅助电器,例如电动刮水器.电喇叭.电动车窗天窗 ...
- 股权、期权和原始股傻傻分不清楚?一文帮你安排的明明白白!
下面内容copy整理自: 原始股.期权傻傻分不清楚?一文帮你安排的明明白白!l 股权.期权和原始股区别 哪个更值钱? [(建议收藏)67%,51%,34%,30%,20%股权对控制权的区别] 说到股权 ...
- Git Flow分支管理
1.Sourcetree简介及安装 一个用于Windows和Mac的免费Git客户端.Sourcetree简化了如何与Git存储库进行交互,这样您就可以集中精力编写代码.通过Sourcetree的简单 ...
- Git 最佳实践:分支管理
5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践.最后我为团队选择了这个git分支管理实践 A successful Git branching ...
- git学习(三)分支管理
分支管理 git学习参考 廖雪峰官方网站 git基本操作,一篇文章就够了! 一.分支作用 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交 ...
最新文章
- D - 小晴天老师系列——晴天的后花园
- 这张“毅力号火星照片”,AI P过
- 使用 Redis 实现一个轻量级的搜索引擎,牛逼啊 !
- 22/11/2010
- 推荐两个Firefox插件
- JAVA爬虫三大运营商
- 动手写一个快速集成网易新闻,腾讯视频,头条首页的ScrollPageView,显示滚动视图...
- 最短路径——Floyd算法及优化(蓝桥杯试题集)
- 配置SpringMVC框架
- 关于laravel数据库问题
- 数据库系统概论-作业(设计本科生事务管理数据库)
- linux scp后台运行的办法
- 记忆训练 0-100的110个数字对应编码
- 2022年信息安全工程师考试知识点:网络安全需求分析与基本设计
- 基于神经网络的指纹识别,指纹比对技术何时出现
- eval与assert一句话木马分析
- python分支结构与循环结构
- ffmpeg 命令的使用
- 华为路由器相同网段DHCPv6配置
- ffplay 内存优化