史上最全分支管理模型总结(GitHub Flow)
创作时间:
作者:
@小白创作中心
史上最全分支管理模型总结(GitHub Flow)
引用
CSDN
1.
https://blog.csdn.net/SUWEISUWEISUWEI/article/details/139039458
GitHub Flow是一种简洁高效的分支管理模型,起源于GitHub的内部开发实践。它通过主分支和功能分支的简单组合,配合拉取请求和代码审查机制,实现了快速迭代和持续部署。本文将详细介绍GitHub Flow的核心概念、流程模型及其适用场景。
GitHub Flow 起源于 GitHub 的内部开发实践,旨在提供一种更加灵活、简单的方法来适应现代软件开发的快速迭代需求。它强调简单性和快速迭代,只需一个常驻的主分支(main 或 master),所有的功能开发、修复和改进都在从主分支派生的短暂功能分支上进行,因为其简单清晰的特点,一经推出就迅速的被大量的开源社区项目所采用。
分支定义
- 主分支 (main 或 master)
- 功能:存放可发布、部署的稳定版本代码。
- 生命周期:常驻。
- 质量:高质量标准,全面测试、部署成功后才能合入。
- 支持分支 (feature/ + 描述性名称)
- 功能:用于开发新特性、作业或修复bug。
- 生命周期:临时,自master拉出,合并到master后删除。
- 质量:充分测试,严格代码交叉评审(MR),部署验证(需求/任务追溯)。
GitHub 分支的主要概念和特点
- 主分支(main或master):主分支是GitHub项目的默认分支,通常用于存放稳定版本的代码。新的特性和修复通常不会直接在主分支上开发,以确保主分支的稳定性。
- 特性分支(Feature branches):特性分支用于开发单个功能或解决问题、试验探索等。开发人员可以从主分支分支出来,然后在特性分支上进行工作。一旦特性完成,可以通过拉取请求(Pull Request)将其合并回主分支或其他指定分支。
- 分支保护规则(Branch protection rules):GitHub允许项目管理员设置分支保护规则,以确保分支的稳定性和质量。这些规则可以包括要求代码审查、通过CI/CD测试等。
- 拉取请求(Pull Requests):拉取请求是GitHub上的一种功能,用于将特性分支的更改合并回主分支或其他目标分支。拉取请求允许团队进行讨论、审查和测试,以确保更改不会引入问题。
- 发布分支(Release branches):类似于Git Flow中的发布分支,GitHub项目可以创建发布分支,用于准备新版本的发布。发布分支上进行最后的测试、修复缺陷和文档更新,并在准备好时合并回主分支。
- 保护分支(Protected branches):GitHub允许项目管理员将某些分支标记为“受保护的”,以防止非授权用户直接向其推送代码。这有助于确保关键分支的安全性和稳定性。
- 协作与权限控制:GitHub提供了灵活的协作和权限控制机制,可以定义哪些团队成员可以访问、编辑和合并分支。这有助于维护代码库的安全性和可维护性。
流程模型
功能交付
- 新功能规划:
- 确定新功能的需求或问题,并创建相应的特性分支(例如 feature/new-feature)。
- 分支规划时可以考虑面向下一个release以及未来的release来建立分支。
- 开发和自测:
- 在特性分支上进行开发工作,期间不断提交代码更改。
- 开发者在本地或者开发环境中进行自测。
- 创建PR:
- 完成开发后,通过创建 Pull Request (PR) 向 master 分支发起合并请求。
- PR 触发自动化测试(单元测试、集成测试等)。
- 解决代码审查评论中的问题:
- PR之后会进行严格的代码评审(相对于目前企业中的代码评审时间要更长,讨论也会更充分)。
- 部署验证:
- 在预发布环境(如准生产环境)进行金丝雀部署或蓝绿部署,对新功能进行验证。
- 可能包括生产数据回放测试,以验证新功能在实际数据条件下的性能和稳定性。
- 合并分支:
- 一旦通过所有测试和验证,PR 被审查并合并到 master 分支。
- 合并后会触发生产环境的部署。
分支管理
如上图是 GitHub Flow 流程下的分支管理模型,在不引入其余类型分账制的情况下,该分支模型管理流程相对简单,与前面的功能交付流程基本一致,这里不再重复说明了。
非阻塞式集成
GitHub flow 最大的特点在于部署(Deploy)发生在合并(Merge)之前,这就是 GitHub flow 的核心,非阻塞式集成 —— 在产生任何副作用之前得知当前修改的所有集成效果,达到真正的持续集成。
适用场景
GitHub Flow适用于多种开发场景,尤其是以下情况:
- 快速迭代项目:对于需要频繁更新和快速响应市场变化的项目,GitHub Flow 提供了一种高效的管理方式。
- 小到中型团队:其简化的流程适合小到中型的开发团队,可以快速上手和实施。
- 持续部署环境:对于采用持续部署实践的项目,GitHub Flow 支持快速、自动化地将更改部署到生产环境。
- 开放源代码和协作项目:简单的分支模型和强调代码审查的流程促进了开源社区和跨团队的协作。
热门推荐
银行账户资金如何进行活期存款?
助听最佳睡眠的音频选择,宁静自然的雨声、自然环境音、还是听asmr?
怎样检查尿酸
告别扁平足,选对鞋子重塑完美足弓
家用车长期停放不开,做好这6件事,有效避免爱车“放”坏
国际期刊投稿成功率提升方法
“阿婆”阿加莎·克里斯蒂作品能复制吗?《沉睡猎犬》给出了答案
字幕文件有哪些格式
大出血是什么症状
闯红灯如何处理违章
穿越时空的爱情观大揭秘!古代与现代,你更认同哪一种?
签转租合同注意事项及要求
青蛙独特的呼吸方式:水中皮肤呼吸与陆地肺呼吸的适应性解析
中国电磁脉冲炸弹曝光:一发可瘫痪敌方电网,作战方式成亮点
沉香制品完全指南:从卧香到精油的全方位解析
我不是药神原型涉嫌罪名的法律解读与分析
《中国考古百问》:一部理想的考古学入门读物
西安美食地图:9个当地人最爱的美食打卡地
两米高的草有哪些
如何把照片 PS 成手绘动漫风格
狗与儿童相处的五个技巧:打造安全和愉快的关系
美国是否对汽车征收销售税?各州汽车销售税政策与差异解析
全生命周期口腔保健专家建议丨科学吃糖 远离酸性饮料
什么是BMI?人体成分分析仪如何科学解读你的身体密码
金钱观:理解人类行为的重要维度
燃气热水器的升数选多大?内行人青睐的“16L”,并非谁都能用
如何规划好支出项目管理?十大关键步骤详解
羽衣甘蓝粉为什么不能天天喝
工作多年后,才看清私企、国企和公务员的差距,你怎么看?
俄乌冲突中的难民:逃离、生存与回归