版本控制器Git(3)

文章目录

  • 前言
  • 一、分支管理策略
  • 二、Bug分支管理
    • 遇到Bug时的处理方法
    • 使用 git stash 暂存工作区内容
    • 创建并切换到Bug修复分支
    • 恢复之前的工作
  • 三、临时分支的删除
  • 总结


前言

  我们在上篇讲到了分支,现在我们就着这个继续来讲解!


一、分支管理策略

master分支稳定性:

  • master 分支应当保持非常稳定,主要用于发布新版本。日常开发工作不应该直接在这个分支上进行,以确保其始终处于可部署状态。

dev分支作为开发主线:

  • 日常开发工作应在 dev 分支上进行。这个分支可以包含不稳定的变化和实验性的功能。
  • 当准备发布一个新版本时,将 dev 分支合并到 master 分支,并在 master 上打标签标识版本号。

个人分支与团队合作:

  • 团队成员应基于 dev 分支创建自己的特性分支来完成特定任务或实现新功能。每个成员都可以自由地在各自的分支上工作,然后定期将更改合并回 dev 分支。
  • 这样一来,团队合作的分支结构就会形成一个主干(dev),周围环绕着多个临时分支,代表不同的开发活动或特性实现。

在这里插入图片描述
日常开发环境:

  • 开发人员提交的代码,还未经过测试验证
  • 不稳定,存在bug
  • dev分支

线上环境:

  • APP、网站
  • 稳定
  • master主分支

测试流程:

  • 经过一系列测试,最终将稳定的代码合并到master上

二、Bug分支管理

遇到Bug时的处理方法

在这里插入图片描述
  场景描述:假设你正在 dev2 分支上进行开发,但突然发现 master 分支存在一个需要立即修复的bug。根据最佳实践,不应该直接在 master 分支上修复问题,而是应该创建一个专门用于修复bug的临时分支。

使用 git stash 暂存工作区内容

  暂存当前工作:当你在 dev2 分支的工作尚未完成且无法提交时,可以使用 git stash 命令将当前工作区的信息储藏起来。这允许你在不提交的情况下切换分支,并确保稍后可以恢复这些更改。

在这里插入图片描述
  git stash:执行此命令后,Git会保存所有已经被追踪文件的修改,例如对 ReadMe 文件所做的编辑。

在这里插入图片描述

  检查stash内容:git stash list:查看当前存储的所有stash记录,确认哪些改动被保存

创建并切换到Bug修复分支

  创建bug分支:从 master 分支创建一个新的分支来专门解决发现的问题。比如修复 ReadMe 文件中少一个字母c导致的bug。

  完成修复后,记得提交更改并合并回 master 分支
在这里插入图片描述

恢复之前的工作

  恢复工作区状态:修复完bug之后,你需要回到 dev2 分支继续未完成的工作。由于之前使用了 git stash,你现在可以通过 git stash pop 来恢复之前的工作区状态。这不仅恢复了你的改动,同时也清除了stash记录。

  git stash pop:恢复最新的stash记录并将其从stash列表中删除。

  分支间的差异:需要注意的是,即使你在 dev2 分支上恢复了之前的工作,它仍然基于修复bug之前的 master 状态,因此 dev2 分支不会包含修复后的代码。但这不影响你在 master 上所做的修复。

在这里插入图片描述
  我们的最终目的是要让 master 合并 dev2 分支的,那么正常情况下我们切回 master 分支直接合并即可,但这样其实是有一定风险的。

  是因为在合并分支时可能会有冲突,而代码冲突需要我们手动解决(在 master 上解决)。我们无法保证对于冲突问题可以正确地一次性解决掉,因为在实际的项目中,代码冲突不只一两行那么简单,有可能几十上百行,甚至更多,解决的过程中难免手误出错,导致错误的代码被合并到 master 上。

  解决这个问题的一个好的建议就是:最好在自己的分支上合并下 master ,再让 master 去合并dev ,这样做的目的是 有冲突可以在本地分支解决并进行测试,而不影响 master 。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、临时分支的删除

  • 在软件开发过程中,新功能的添加是一个持续不断的需求。为了确保主分支(通常是 main 或 master)的稳定性,不会因为实验性质的代码而受到影响,每开发一个新的功能时建议创建一个独立的分支,通常称之为 feature 分支。

  • 这个分支用于隔离新功能的开发工作,直到该功能完成并经过测试后,再将其合并回主分支。之后,可以安全地删除 feature 分支,以保持仓库的整洁。

  然而,有时候项目需求会发生变化。例如,如果你正在某个 feature 分支上开发新功能,但中途被要求停止开发——这可能是由于优先级的变化或其他原因——那么即使这部分工作尚未完成或合并,也需要删除这个 feature 分支。

  在这种情况下,使用常规的 git branch -d 命令是不够的,因为它只允许删除已经被合并过的分支。对于未合并的分支,你需要使用强制删除命令

git branch -D [分支名]

  此命令会立即删除指定的分支,无论它是否已经合并。

  分支机制为开发者提供了极大的灵活性和安全性。假设你着手开发一个预计需要两周才能完成的新功能,在开发的第一周内你可能只完成了50%的工作。

  此时,如果你直接在主分支上提交不完整的代码,可能会干扰团队中其他成员的工作;相反,如果你等到全部完成后再一次性提交,又面临着丢失每日进度的风险。

  通过创建个人专属的分支,你可以自由地进行开发,不受他人工作的干扰,同时也不会影响到别人。你可以随时提交更改,保护每天的工作进度。一旦开发完成并通过了必要的审查和测试,就可以将你的分支合并回主分支。


总结

  Git 的分支操作非常高效,无论是创建、切换还是删除分支,都能在一秒钟内完成,不论版本库包含多少文件。
  利用 Git 的分支功能来管理不同阶段和类型的开发工作流,是一种既便捷又高效的方法~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32252.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytest+allure+jenkins

本地运行参考:pytestallure 入门-CSDN博客 jenkins运行如下: 安装插件:allure 配置allure安装目录 配置pytest、allure 环境变量 配置流水线 进行build,结果如下 ,点击allure report 查看结果

AI术语整理(持续更新)

在AI相关的学习和使用中,经常会被各种术语混淆,搞清楚术语本来的含义是关键,本文收集整理了部分AI相关术语,会持续更新。 基础概念 人工智能(Artificial Intelligence,AI):一种模…

【蓝桥杯单片机】第十一届省赛

一、真题 二、创建工程 1.在C盘以外的盘新建文件夹,并在文件夹里面创建两个文件夹Driver 和Project 2.打开keil软件,在新建工程并选择刚刚建好的project文件夹,以准考证号命名 3.选择对应的芯片型号 4.选择否,即不创建启动文件 …

GMT绘图笔记:用深度作为表面高度(Z 值),用其他物理量(泊松比)给表面着色

之前用GMT绘制莫霍面的三维示意图是用的莫霍面的深度作为表面着色。 GMT绘图笔记:绘制堆叠三维图_gmt画图-CSDN博客 如果要换成其他的物理场,比如泊松比,则需要使用以下的代码 gmt begin BS_figures2 png,pdf E600 # 绘制底图 # Chistrong…

docker搭建elk

文章目录 1.拉取镜像2.ES配置3.logstash配置4.kibana配置5.创建自定义网络6.docker-compose.yml文件7.springboot对接Logstash1.创建一个springboot项目引入主要依赖2.application.yml配置3.resources目录中新增logback-spring.xml4.启动项目,搞点日志5.进入kibana控…

golang算法快慢指针

876. 链表的中间结点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中间结…

瑞云渲染专访奥斯卡提名制片人兼女性动画人协会副主席Jinko Gotoh!

都说CG行业男多女少,女同胞都是珍稀资源,但艺术领域怎么可以没有女性视角呢?本期推文我们邀请到了动画行业资深大佬后藤纯子Jinko Gotoh,作为奥斯卡提名制片人兼女性动画人协会副主席,后藤纯子始终以多元文化倡导者与创…

道路运输安全员考试:备考中的心理调适与策略

备考道路运输安全员考试,心理调适同样重要。考试压力往往会影响考生的学习效率和考试发挥。​ 首先,要正确认识考试压力。适度的压力可以激发学习动力,但过度的压力则会适得其反。当感到压力过大时,要学会自我调节。可以通过运动…

卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现

摘要:卡尔曼滤波(Kalman Filter)是传感器数据融合领域的经典算法,在姿态解算、导航定位等嵌入式场景中广泛应用。本文将从公式推导、代码实现、参数调试三个维度深入解析卡尔曼滤波,并给出基于STM32硬件的完整工程案例…

【Linux】:线程池

朋友们、伙计们,我们又见面了,本期来给大家带来线程池相关的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构…

SpringMVC (一)基础

目录 SpringMVC 一 简单使用 1 新建模块选择指定参数 2 创建实现类 3 将项目启动 4 运行结果:在浏览器当中响应执行 二 RequestMapping 三 请求限定 SpringMVC SpringMVC是Spring的web模块,用来开发Web应用,SpringMVC应用最终作为B/…

tomcat应用的作用以及安装,以及tomcat软件的开机自启动。

一.tomcat介绍 1.作用 tomcat是一款用来部署网站服务器的一款软件。 动态网站主流语言: PHP, lamp/lnmp平台 Java语言,运行在tomcat平台。【只要这个网站或者软件是Java语言写的,我们都可以在tomcat平台上去运行这个java程序。】 网站是…

CSDN博客:Markdown编辑语法教程总结教程(下)

❤个人主页:折枝寄北的博客 Markdown编辑语法教程总结 前言1. LaTex数学公式2. 插入不同类别的图2.1 插入甘特图2.2 插入UML图2.3 插入Mermaid流程图2.4 插入Flowchart流程图2.5 插入classDiagram类图 3. CSDN快捷键4. 字体相关设置4.1 字体样式改变4.2 字体大小改变…

AI模型的构建过程是怎样的(下)

你好,我是舒旻。 上节课,我们讲了一个模型构建的前 2 个环节,模型设计和特征工程。今天,我们继续来讲模型构建的其他 3 个环节,说说模型训练、模型验证和模型融合中,算法工程师的具体工作内容,以及 AI 产品经理需要掌握的重点。 模型训练 模型训练是通过不断训练、验证…

K邻近算法

K邻近算法 1 算法介绍 1.1 什么是K-NN K-NN(K Near Neighbor):k个最近的邻居,即每个样本都可以用它最接近的k个邻居来代表。K-NN算法属于监督学习方式的分类算法,即计算某给点到每个点的距离作为相似度的反馈。简单…

晋升系列4:学习方法

每一个成功的人,都是从底层开始打怪,不断的总结经验,一步一步打上来的。在这个过程中需要坚持、总结方法论。 对一件事情长久坚持的人其实比较少,在坚持的人中,不断的总结优化的更少,所以最终达到高级别的…

LoRA,DoRA,RSLoRA,LoRA+ 是什么

LoRA,DoRA,RSLoRA,LoRA+ 是什么 一、LoRA(Low-Rank Adaptation,低秩适应) 核心原理:冻结预训练模型参数,仅在每层插入两个低秩矩阵(A∈R^{rd}, B∈R^{dr}),通过分解权重增量ΔW=BA近似全秩更新,参数量仅为全量微调的0.01%-1%。 举例:在GPT-2(774M参数)的注意力…

HTTP发送POST请求的两种方式

1、json String json HttpRequest.post(getUrl(method, "v1", url, userId, appKey)).header("Content-type", "application/json") // 设置请求头为 JSON 格式.body(JSONUtil.toJsonStr(params)) // 请求体为 JSON 字符串.execute().body(); …

TCP并发服务器

单循环服务器&#xff1a;服务器在同一时刻只能响应一个客户端的需求。 并发服务器&#xff1a;服务器在同一时刻可以响应多个客户端的需求。 构建TCP服务器的方法&#xff1a; IO多路复用的函数接口[select() poll() epoll()] 1.多进程实现TCP并发服务器 #include <s…

【大模型统一集成项目】如何封装多个大模型 API 调用

&#x1f31f; 在这系列文章中&#xff0c;我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程&#xff0c;从 架构设计 到 代码实战&#xff0c;逐步搭建一个支持 多种大模型&#xff08;GPT-4、DeepSeek 等&#xff09; 的 一站式大模型集成与管理平台&#xff…