项目开发代码分支管理

这篇具有很好参考价值的文章主要介绍了项目开发代码分支管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目开发流程系列

  1. 项目开发混淆从初识到理解
  2. 项目开发代码分支管理

博客创建时间:2022.08.27
博客更新时间:2022.08.28

以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。


前言

在团队开发中,当有多个需求版本进行并发并行时,选用合适自己的分支管理策略将变得更加必要和急迫,我们来一起认识分支管理的git_flow和github-flow工作流吧。

版本发布类型

在进行分支管理时不得不科普一下主干发布分支发布

主干发布
的特点就是项目的功能开发工作在master分支上,代码开发完毕后,经过功能测试没有问题后,在master主分支上打release标签作为项目代码版本进行发布。是效率最高的一种项目开发方式。
发布完毕后,master主分支还继续做项目下一个功能版本的开发工作。如果线上代码出现bug,那么就在master分支上修复就可以了。

特征

  1. 项目所有主要/核心功能代码的开发工作都在master分支上,开发完毕后,在master分支上进行集成测试 。
  2. 项目代码测试通过后,通过打标签的方式,以标签的方式进行代码发布。
  3. 项目正常运行过程中出现bug,在master分支进行bug的修复工作,修复代码通过测试后,打标签发布。

优势:

  1. 项目代码发布前,需要进行主干集成测试,代码冲突易于提前发现
  2. master主干代码安全稳定,每次测试通过后,都可以随时发布。
  3. 集成测试常见的配套措施:每日集成(编译部署测试),代码检查,单元/接口/界面自动化测

劣势:
新功能代码在master主干上开发,若主干代码达不到稳定的标准,不可以进行项目发布master上主干开发有先后,有未完成的功能但又需要发布时,需要能隐藏未完成部分。 为了避免以上情况,有三种缓解方法:

1)功能拆分,小批量频繁发布;
2) 后端先行,ui或功能入口发布;
3) 功能开发,配置决定功能

分支发布
项目的功能开发工作在master分支上,代码开发完毕后,经过功能测试没有问题后,从master主分支上切出一个release分支,作为项目代码版本发布的专用分支,而master分支还继续做项目下一个功能版本的开发工作。
如果线上代码出现bug,那么就在release分支上修复就可以了,修复后的代码最终要合并到主干上,只有非常严重的缺陷修复才会从master合并到release分支上。

优势:
主干开发的过程中,关于分支合并的工作量很少,所以整体比较简单,且更容易发布

劣势:
线上出现历史严重bug,需要在各该分支上各个修复,直接在master修复后同步到各分支容易有各冲突


Git-Flow

Git_flow是一种代码分支管理规范,其实它属于一种主干开发—主干发布类型。遵守的Git-Flow规范的分支分为两种,长期分支和短期分支。该工作流相对复杂,需要同时维护两个长期分支,开发中需要经常切换分支
项目开发代码分支管理

长期分支
1. 主分支master

1. 线上所有功能代码所在,只读不可修改,对外发布的唯一分支。
2. 只能由hotfix或develop合并

2. 开发分支develop

1. 基于master 分支克隆,只读不可修改。
2.  feature分支从该分支拉出,开发完成后合并到develop
3. 分支上的功能经测试无误后,需要由该分支再次合并到master分支上。

短期分支
一旦开发完成就会合并到develop和master分支上,然后被删除。

1. 功能分支(feature branch)

1. 功能开发分支 , 基于 develop 分支克隆 , 主要用于新需求新功能的开发,属于临时分支
2. feature 分支可同时存在多个 , 用于团队中多个需求功能同时开发
3. 功能开发完毕并测试完成后合到 develop 分支。合并后此分支删除(谁合并谁删除)

2. 补丁分支(hotfix branch)

1. 基于 master 分支克隆 , 主要用于对线上的版本进行bug修复,属于临时分支
2. 修复完毕后,如果需要临时发版则需要打tag并推送到master/develop分支,如果不需要发版只需要推送到develop分支且不用打tag

3. 预发分支(release branch)

1. 用于提交给测试人员进行功能测试 , 测试过程中发现的 BUG 在本分支进行修复 , 修复完成上线后打tag并合并
2.从 develop 分支克隆,属于临时分支。提测完成后合并到master/develop分支,然后删除该分支(谁合并谁删除)。

GitHub-Flow

Github flow 是Git flow的简化版,专门配合”持续发布”。它是 Github.com 使用的工作流程。在持续发布模式下,master和develop分支其实差异不大,所以GitHub-Flow工作流只有一个长期分支master。
项目开发代码分支管理
github-flow与git-flow区别

  1. github-flow只有一个长期分支master
  2. github-flow没有release分支,需求功能直接在feature分支上测试完毕merge到master,然后再master分支上进行发布
  3. 每次feature分支merge到master上时可能会有冲突,这要求在feature发布前需要合并一线master代码到feature上,进行提测测试。

总结

github_flow模式的工作流一般更贴近日常开发工作,根据自身项目的发布特点可以进行差异化的调整,适合自己的才是最好的。


相关链接

  1. 项目开发混淆从初识到理解
  2. 项目开发代码分支管理

扩展链接:

  1. Material Design UI方案使用讲解
  2. Material TextInputLayout使用详解

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !文章来源地址https://www.toymoban.com/news/detail-403441.html

到了这里,关于项目开发代码分支管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【大模型应用开发教程】04_大模型开发整体流程 & 基于个人知识库的问答助手 项目流程架构解析

    项目仓库地址 项目学习地址 定义 将 开发以LLM为功能核心 ,通过LLM的强大理解能力和生成能力,结合特殊的数据或业务逻辑来提供独特功能的应用。 核心点 通过调用 API 或开源模型来实现核心的理解与生成 通过 Prompt Enginnering 来实现大语言模型的控制 在大模型开发中,我们

    2024年02月05日
    浏览(38)
  • Python Flask 全流程全栈项目实战(熟悉企业真实的开发全流程)

    Python Flask开发:从入门到理论 Python Flask是一个轻量级的Web框架,它使得开发Web应用程序变得愈加简单和快速。本文将引见Flask开发的根底学问和技术,协助你从零开端构建一个完好的Web应用程序。 一、装置与环境配置 首先,确保你曾经装置了Python。然后,经过pip装置Flask:

    2024年02月19日
    浏览(30)
  • 【java】Java项目从开发到部署生产完整流程梳理

    从事Java开发许久,从最初学习的JDK环境变量开始,到如今开发部署发布,已经逐渐形成了自己的一套体系,当然,其中也不少学习了网上各种资料总结,接下来将在本文对Java项目开发到部署发布整个流程进行归纳梳理。 关于开发环境,在之前写的一篇文章里有详细教学,因

    2024年02月03日
    浏览(30)
  • uni-app开发小程序以及项目部署流程

    作者也是刚开始接触小程序开发,本次小程序开发使用的uni-app,记录下小程序的开发过程。         作者使用的开发工具:HBuilder x、微信开发者工具。         详细步骤可参考uni-app官网-快速上手,下面简述下作者的使用过程:         1.在HBuilder X 中打开如下路径文件 - 新

    2024年02月09日
    浏览(40)
  • uni-app项目的开发和发布流程(包括开发版、体验版、正式版)

    uni-app的开发和发布流程(包括开发版、体验版、正式版) 开发工具:HbuilderX编辑器、微信小程序开发工具 1、新建uni-app项目 2、运行到微信小程序(第一次可以从HbuilderX点进去,后面等发行包出来,可以导入里面dev文件夹里的mp-weixin) 3、发行版本(开发版-体验版-正式版)

    2024年02月08日
    浏览(42)
  • 大模型开发(十六):从0到1构建一个高度自动化的AI项目开发流程(中)

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共1w余字,预计阅读时间约40~60分钟 | 满满干货(附代码),建议收藏! 本文目

    2024年02月14日
    浏览(24)
  • 43--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-课程详情页面、搜索页面以及后台设计

    1.视频播放功能 下载第三方插件:vue-video-player 使用步骤: 第一步: cnpm install vue-video-player 第二步:在main.js中引入

    2024年02月09日
    浏览(37)
  • 探索现代前端工程化工具与流程:提升开发效率和项目质量

    前端工程化是指利用各种工具和技术来提高前端开发效率、代码质量和团队协作的一种开发模式。 它的背景和发展与前端技术的演进密切相关。 在过去,前端开发主要依靠手工编写 HTML、CSS和JavaScript 来构建网页。随着互联网的发展和前端技术的不断演进,前端的工作变得更

    2024年02月14日
    浏览(48)
  • Android开发-Android项目Jenkins自动化打包流程搭建与配置

    由于之前公司的 Android 项目需要 APK 自动打包的功能,所以需要搭建 Jenkins 自动化打包的功能。 Jenkins 是一个用于自动化构建、测试和部署软件项目的开源持续集成和持续交付(CI/CD)工具。它提供了一个可扩展的平台,可以帮助开发团队更快地构建、测试和交付他们的应用程

    2024年02月08日
    浏览(36)
  • 使用antv/G6在vue项目中开发较复杂样式流程图

    设计师提供了一版样式较复杂的流程图,我搜了一些常用的vue-super-flow和vue-x6-flow等都只支持简单的样式。之前自己写过纯展示流程图不涉及太多交互,感觉还是找一个成熟的插件开发更适合,也方便其他同事参考,所以最后选择了用antv/G6自己个性化开发,总结了使用antv/G6在

    2023年04月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包