当前位置: 首页 > news >正文

gitflow

gitflow

1. 各个分支介绍

  • master分支:

    • 源代码 HEAD始终反映出生产就绪状态。
    • 仅包含 生产环境可发布的代码,每个提交对应一个正式版本(通过 git tag 打版本号)
    • 一般情况下,只允许合并(如从 releasehotfix 分支合并), 禁止直接提交代码。
    • 仓库自带的主分支。
  • develop分支:

    • 源代码 HEAD 始终反应下一个版本的最新开发变更。
    • 当分支中的源代码develop达到稳定状态并准备发布时,所有更改都应以 master 某种方式合并回分支,并标记发布号。
    • 只能从master分支上创建。
  • feature分支:

    • 用于为即将发布或遥远的未来版本开发新功能。
    • 功能分支的本质在于,只要该功能仍在开发中,它就会一直存在,但最终会被合并回去develop(以确保将新功能添加到即将发布的版本中)或被丢弃(以防实验结果令人失望)。
    • 功能分支通常仅存在于开发人员存储库中,而不存在于origin
    • 从develop分支上创建,会回到develop分支, 也有可能合并到realease分支上。
  • release分支:

    • 支持新生产版本的准备工作。它们允许在最后一刻进行细致的修改。
    • 允许修复小错误并准备发布的元数据(版本号、构建日期等)。通过在发布分支上完成所有这些工作。
    • 创建自develop分支,必须合并回develop(如果有小问题被改动)和 master。
  • hotfix分支:

    • 当生产版本中存在严重错误需要立即解决时,可以从标记生产版本的主分支上相应的标签分支出一个热修复分支。
    • 创建自master分支,必须合并回develop和master分支。

2. 工作流程

1. 流程图

img

2. 团队如何进行开发

我将以思悟项目为例进行说明:

假设目前思悟项目master分支上最新提交为1.1.13版本,其他分支全部没有。并以前端为例。

  1. 负责人从master分支上创建develop分支。(远程库操作)

  2. 由于将要开发的功能分为两个模块,两个前端负责人从develop分支上创建两个功能分支。(远程库操作)。

    1. feature/growth-points-system
    2. feature/Qa-community
  3. 负责人划分好模块分发给团队人员,团队人员拉取团队对应的分支并创建自己的功能分支进行开发。

git switch feature/growth-points-system # 切换至团队的功能分支feature/growth-points-system
git pull origin feature/growth-points-system # 拉取代码
git checkout -b feature/growth-points-system/growth-system # 比如我负责 成长体系,那么就再创建自己的分支
  1. 团队成员分发的模块完成后,将代码feature/growth-points-system与合并、测试和提交。

  2. 负责人将完整的功能与develop分支合并。

  3. 两个模块全都开发完毕后,develop分支存在两个功能的代码,此时总负责人从develop分支上创建release分支,进行预发布测试。如果有问题及时解决。

  4. 测试完毕后,将release分支分别合并到develop(如果有新的改动)和master 分支。

3. 如何修复紧急bug

如果负责的模块有bug需要进行修复,可以按一下流程:

  1. 从master分支上创建hotfix分支。(远程库操作)
# 从本地手动操作的流程 也可以直接在远程库操作
git checkout master
git pull origin master
git checkout -b hotfix/online-code-run # 分支名明确问题
git push -u origin hotfix/online-code-run
  1. 修复bug后提交,与develop分支同步。
git add .
git commit -m 'fix(code-run) 修复代码在线运行崩溃问题'
git checkout develop
git pull origin develop
git merge hotfix/online-code-run
# 这一步大概率会有冲突 解决冲突
git push origin develop
  1. hotfix/online-code-run合并到master分支上(在远程库提交合并请求并更新小版本号)

4. 个人开发时可能遇到的问题及建议

1. 可能遇到的问题
  1. 代码没有提交或者没有储藏就开始切换分支,导致代码合并污染了刚刚切换的分支。此时想要回退却发现代码全都不要见了。

这种问题一般会发生在想要紧急修复bug时。问题产生的原因主要是git默认会将工作区未提交的代码进行合并防止丢失

解决方法:在切换分支时先将代码进行提交到本地库(``git add .git commit -m ‘xxx’),或者git stash进行临时存储,这时再切换分支,就可以避免这样的问题。如果是 git stash 进行临时存储,当回到本分支后需要恢复存储git stash pop`

  1. 热修复分支一定要从 master 分支上创建,不要从develop分支上创建,因为 develop 分支可能会有新的功能,此时难以提交到master分支上。
  2. 如果团队在开发时遇到我所做的模块需要其他人模块中的部分功能才能进行测试或者继续开发,具体的场景比如说,团队成员A需要完成一级路由的框架搭建,成员B和成员C需要基于一级路由的框架开发二级路由的页面(并行开发),这时的解决方法有哪些?后端的具体场景本人能力有限不知道有哪些,也不了解如何解决。
    1. 由成员A先迅速搭好框架(不显示具体的内容),并与团队的主功能分支先进行合并,让其他成员拉取最新的代码进行开发。
    2. 自主功能分支上创建一个公共分支,如果有需要进行耦合的代码,将公共组件先提交至公共分支。
    3. 对于上述具体场景也可以先单独开发页面,将路由的部分在最后成员A开发完后再进行合并。
    4. 对于需要复用的接口,可以先约定接口,将模板搭建,之后进行mock测试。(理解不够到位不知道怎么写)
2. 建议
  1. 建议如果有git操作建议使用命令而不是编辑器中的集成工具,方便自己熟悉git操作和流程。
  2. 如果要进行代码的提交和推送时,建议将项目中除了依赖的文件夹全部备份一下,防止出错导致代码丢失。
  3. 项目负责人需要做好工作,将需求划分好模块,分给团队成员的模块尽可能的降低耦合。
http://www.xdnf.cn/news/758161.html

相关文章:

  • 《Pytorch深度学习实践》ch2-梯度下降算法
  • 设计模式——状态设计模式(行为型)
  • 设计模式——代理设计模式(结构型)
  • android stdio 的布局属性
  • 鸿蒙ArkTS | Badge 信息标记组件自学指南
  • MyBatis03——SpringBoot整合MyBatis
  • Kubernetes(K8s)核心架构解析与实用命令大全
  • Go 语言 select 语句详解
  • JMeter 性能测试
  • DDR5 ECC详细原理介绍与基于协议讲解
  • 3D Gaussian splatting 05: 代码阅读-训练整体流程
  • 【计算机网络】第3章:传输层—面向连接的传输:TCP
  • Spring Boot中Excel处理完全指南:从基础到高级实践
  • telnet 基本用法
  • Java并发编程中任务调度与线程池的配置优化
  • 大规模真实场景 WiFi 感知基准数据集
  • SSL/TLS 协议详解:安全通信的基石
  • C++修炼:位图和布隆过滤器
  • 布隆筛选详解
  • Ansible自动化运维工具全面指南:从安装到实战应用
  • 【Go语言生态】
  • Vue初始化脚手架
  • 数据库,Spring Boot,数据源
  • 第13讲、Odoo 18 配置文件(odoo.conf)详细解读
  • 6.1 英语复习笔记 3
  • 如何利用大语言模型生成特定格式文风的报告类文章
  • Redis分布式锁实现指南
  • 《P3959 [NOIP 2017 提高组] 宝藏》
  • 继承与多态
  • 篇章七 数据结构——栈和队列