gitflow

article/2025/8/13 19:16:02

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.hkcw.cn/article/IQXnMCVvom.shtml

相关文章

Python训练营---Day42

DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 1、回调函数 回调函数(Callback Function)是一种特殊的函数,它作为参数传递给另一个函数&#…

Git远程操作

目录 1. 理解分布式版本控制系统 2. 远程仓库 3. 新建远程仓库 4. 克隆远程仓库 4.1 使用HTTPS方式: 4.2 使用SSH方式: 5. 向远程仓库推送 总结: 问题: 6. 拉取远程仓库 7. 配置Git 7.1 忽略特殊文件 8. 给命令配置别…

SolidWorks软件的安装与卸载

文章目录 软件的下载途径软件的安装软件的卸载 简介:这篇文章介绍了SolidWorks软件的安装与卸载,步骤是比较繁琐的,但照着步骤一步一步的来15分钟就能安装成功。这里要特别的注意一点的是,文件的安装位置一定要集中(别…

Python 验证码识别(使用pytesseract库)

文章目录 摘要1、安装Tesseract-OCR2、在python中使用安装依赖 3、本地图片识别4、结合playwright动态识别网站验证码 摘要 python中使用pytesseract库进行ocr识别,需要安装Tesseract-OCR,通过指定pytesseract.tesseract_cmd路径,可以将esser…

日志与策略模式

什么是设计模式 IT行业这么火, 涌入的人很多. 俗话说林子大了啥鸟都有. 大佬和菜鸡们两极分化的越来越严重. 为了让菜鸡们不太拖大佬的后腿, 于是大佬们针对一些经典的常见的场景, 给定了一些对应的解决方案, 这个就是 设计模式 日志认识 计算机中的日志是记录系统和软件运行中…

ToolsSet之:XML工具

ToolsSet是微软商店中的一款包含数十种实用工具数百种细分功能的工具集合应用,应用基本功能介绍可以查看以下文章: Windows应用ToolsSet介绍https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Text菜单下的XML Tool工具是一个Xml工…

2025年目前最新版本Android Studio自定义xml预览的屏幕分辨率

一、前言 在实际开发项目当中,我们的设备的分辨率可能会比较特殊,AS并没有自带这种屏幕分辨率的设备,但是我们又想一边编写XML界面,一边实时看到较为真实的预览效果,该怎么办呢?在早期的AS版本中&#xff…

sql知识梳理(超全,超详细,自用)

目录 通识 查询的基本语法 数据库(database)操作 表(table)的操作 表中列的操作 索引操作 表中行的操作 insert into语句 update语句 删除语句 select语句 表与表之间的关系 连接查询 子查询 视图 数据备份与还原 …

数据分析图表类型及其应用场景

说明:顶部HTML文件下载后可以直接查看,带有示图。 摘要 数据可视化作为现代数据分析的核心环节,旨在将复杂、抽象的数据转化为直观、易懂的图形形式。这种转化显著提升了业务决策能力,优化了销售与营销活动,开辟了新…

1、树莓派更换软件下载源

树莓派官方系统raspbian自带的是国外的软件源,在国内使用经常会遇到无法下载软件的问题。 以下是把raspbian系统(buster版本)的下载源改为阿里云软件源的方法。 1、修改sources.list文件 sudo nano /etc/apt/sources.list 将初始化中的代…

TDengine 集群容错与灾备

简介 为了防止数据丢失、误删操作,TDengine 提供全面的数据备份、恢复、容错、异地数据实时同步等功能,以保证数据存储的安全。本节简要说明 TDengine 中的容错与灾备。 容错 TDengine 支持 WAL 机制,实现数据的容错能力,保证数…

第十五章 访问控制

系列文章目录 第一章 总体概述 第二章 在实体机上安装ubuntu 第三章 Windows远程连接ubuntu 第四章 使用Docker安装和运行EMQX 第五章 Docker卸载EMQX 第六章 EMQX客户端MQTTX Desktop的安装与使用 第七章 EMQX客户端MQTTX CLI的安装与使用 第八章 Wireshark工具的安装与使用 …

LeetCode算法题 (搜索二维矩阵)Day18!!!C/C++

https://leetcode.cn/problems/search-a-2d-matrix/description/ 一、题目分析 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 ta…

基于谷歌ADK的智能客服系统简介

Google的智能体开发工具包(Agent Development Kit,简称ADK)是一个开源的、以代码为中心的Python工具包,旨在帮助开发者更轻松、更灵活地构建、评估和部署复杂的人工智能智能体(AI Agent)。ADK 是一个灵活的…

MySql(十三)

目录 mysql外键约束 准备工作 创建表 插入数据 创建表时添加外键 1..格式 2..创建表student表时,为其添加外键 3.插入数据测试 正常数据 异常数据 3.使用alter添加外键 删除外键 添加外键 4.Mysql外键不生效的原因 修改引擎 phpystudy的mysql位置 mysql外键约束 注&…

WEBSTORM前端 —— 第3章:移动 Web —— 第2节:空间转换、转化

目录 一、空间转换 1.空间转换 2.空间转换 – 平移 3.视距 perspective 4.空间 – 旋转 ③空间旋转——Z轴代码与效果视频 ④空间旋转——X轴代码与效果视频 ⑤空间旋转——Y轴代码与效果视频 5.立体呈现 – transform-style 案例 – 3D 导航 6.空间转换 – 缩放 …

【AI论文】R2R:通过小型与大型模型之间的令牌路由高效导航发散推理路径

摘要:大型语言模型(LLMs)以巨大的推理开销为代价,实现了令人印象深刻的推理能力,这带来了巨大的部署挑战。 尽管蒸馏的小语言模型(SLM)显著提高了效率,但由于它们无法遵循LLM的推理路…

学习日记-day20-6.1

完成目标&#xff1a; 知识点&#xff1a; 1.集合_Collections集合工具类 方法:static <T> boolean addAll(Collection<? super T> c, T... elements)->批量添加元素 static void shuffle(List<?> list) ->将集合中的元素顺序打乱static <T>…

区块链可投会议CCF B--EDBT 2026 截止10.8 附录用率

Conference&#xff1a;EDBT: 29th International Conference on Extending Database Technology CCF level&#xff1a;CCF B Categories&#xff1a;数据库&#xff0f;数据挖掘&#xff0f;内容检索 Year&#xff1a;2026 Conference time&#xff1a;24th March - 27th…

蓝光过滤APP:护眼小助手,守护您的视力健康

在数字时代&#xff0c;手机和平板电脑已成为我们生活中不可或缺的工具。无论是工作、学习还是娱乐&#xff0c;长时间使用这些设备已成为常态。然而&#xff0c;长时间盯着屏幕不仅会导致眼睛疲劳&#xff0c;还可能对视力造成不可逆的损害。蓝光过滤APP正是为了解决这一问题而…