git代码管理 分支相关 新建dev、hot分支,分支协同操作

news2024/11/28 19:37:45

初始化仓库后 会自动为我们创建master分支,我们也可以自己创建分支,每一个分支都有自己的一套工作区,暂存区,仓库区。

问题情景1

此时正在dev分支上开发新的功能,如果线上产生了一个bug,使用stash存储下在dev开发到一半的功能,然后切换到master分支上新建一个修复bug的分支 fix_bug,在fix_bug分支上修复好bug后再合并到master分支上,此时再切换回dev分支上继续开发功能,开发完成后将dev分支合并到master分支上,此时岂不是产生了冲突?

是的,会产生冲突,如果dev上开发的功能和fix_bug修复bug对同一个文件都进行了操作,此时git不知道该保留哪一个,那么便会产生冲突,需要我们手动保留内容。那可不可以在dev上恢复stash之前,先将master分支合并到dev上呢?

我们首先新建一个dev分支,可以使用git checkout -b dev
在这里插入图片描述

git checkout -b dev 用于创建并切换到名为 “dev” 的新分支。
git checkout:这是一个用于在 Git 中切换分支或恢复文件的命令。
-b:这是 git checkout 命令的一个选项,用于创建并切换到一个新的分支。
dev:这是指定的分支名称,即你希望创建的新分支的名称。

修改1.txt文件 添加一行“开发新功能”,此时线上运行遇到了bug,我们首先使用git的stash贮存功能,git stash
在这里插入图片描述
git stash可以让我们暂时将修改的1.txt中的内容存储起来,这样切换到其他分支不会受到影响

git stash 命令用于将当前工作目录中的更改暂存(存储)起来,以便你可以在切换到其他分支或应用其他更改时保留这些更改。
执行 git stash 命令后,Git 会做以下操作:
将暂存区和工作目录中的未提交更改保存为一个 stash。
清空暂存区,使其与最新的提交一致。
这样,你就可以切换到其他分支或进行其他操作,而不会受到未提交的更改的影响。
如果你想给 stash 添加一个描述信息,可以使用 -m 参数,例如:
git stash save -m “My stash description”
要查看已保存的 stash 列表,可以使用 git stash list 命令。
要恢复(应用)最新的 stash 并将其从 stash 列表中删除,可以使用 git stash pop 命令:
git stash pop
如果你只想恢复(应用)最新的 stash,但不删除它,可以使用 git stash apply 命令:
git stash apply
如果你有多个 stash,并且想根据标识符选择恢复特定的 stash,可以使用 git stash apply 或 git stash pop 命令,后面跟上对应的 stash 标识符。
需要注意的是,stash 是按照存储的顺序进行堆叠的,你可以根据需要应用或删除特定的 stash。

我们使用git checkout main,重新切换到main分支,使用git checkout -b fix_bug新建并切换到fix_bug,在该分支上修复线上的bug,我们在1.txt内容中新增一行"修复bug",bug修复完成后,使用git commit -am "修复bug"提交到fix_bug分支上的仓库区。

git commit -am “修复bug” 这个命令的效果相当于以下两个步骤的组合:

git add . # 将所有已被 Git 跟踪的文件的更改添加到暂存区
git commit -m “修复bug” #创建一个新的提交记录并指定提交消息
-a:这是 git commit 命令的一个选项,表示自动将所有已经被 Git 跟踪的文件的更改都加入到提交中。这样你就不需要使用 git add 命令来将修改的文件添加到暂存区。
请注意,-a 选项只会将已经被 Git 跟踪的文件的更改添加到提交中,如果有新添加的文件或未被跟踪的文件,你仍然需要使用 git add 命令将它们添加到暂存区。

在这里插入图片描述

然后我们重新切换到main分支,然后合并fix_bug分支,使用git merge fix_bug
在这里插入图片描述
此时修改好bug,我们切换回dev分支进行新功能的开发。我们首先将修复好bug的main分支合并到dev分支中,
在这里插入图片描述
然后使用git stash pop重新恢复我们刚刚开发的功能
在这里插入图片描述
此时发生了冲突,在1.txt中文件显示如下,需要我们去手动修改
在这里插入图片描述
修改后1.txt如图
在这里插入图片描述
使用git add 1.txt指令将修改后的文件标记为已解决冲突的状态,再次提交
git commit -m "合并冲突,开发新功能"
在这里插入图片描述
切换到main分支并合并
在这里插入图片描述
然后我们也可以删除掉fix_bug分支了,使用git branch -d fix_bug指令
在这里插入图片描述
此时我们bug修复了,然后新功能开发完成后也合并到了main版本,可以等待上线了。在这个过程中,我们在dev分支恢复贮存的时候产生了冲突,需要我们进行手动保留。即git不知道该保留哪个内容时(在本文中是“开发新功能”和“修复bug”),会发生冲突,需要我们决定和手动修改保留。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arcgis克里金插值报错:ERROR 999999: 执行函数时出错。 表名无效。 空间参考不存在。 ERROR 010429: GRID IO 中存在错误

ERROR 999999: 执行函数时出错。 问题描述 表名无效。 空间参考不存在。 ERROR 010429: GRID IO 中存在错误: WindowSetLyr: Window cell size does not match layer cell size. name: c:\users\lenovo\appdata\local\temp\arc2f89\t_t164, adepth: 32, type: 1, iomode: 6, …

python: 用百度API读取增值税发票信息

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/30 6:56 # User : geovindu # Product : PyCharm # Proj…

智慧公厕:探索未来公共厕所的创新设计

近年来,随着城市发展的不断科技化,智慧公厕的设计成为了一个备受关注的话题。作为城市基础设施的重要组成部分,公厕不仅仅是简单的功能性建筑,更是体现了城市形象和管理水平的重要指标。在这篇文章中,我们将以智慧公厕…

【python】python实现杨辉三角的三种方法

文章目录 1.杨辉三角介绍:2.方法一:迭代3.方法二:生成器4.方法三:递归 1.杨辉三角介绍: 杨辉三角是一种数学图形,由数字排列成类似三角形的形状。它的每个数值等于它上方两个数值之和。这个三角形的形状可以…

【Linux】CentOS-6.8超详细安装教程

文章目录 1.CentOS介绍:2.必要准备:3.创建虚拟机:4 .安装系统 1.CentOS介绍: CentOS是一种基于开放源代码的Linux操作系统,它以其稳定性、安全性和可靠性而闻名,它有以下特点: 开源性&#xff1…

STM32F4X UCOSIII软件定时器

STM32F4X UCOSIII软件定时器 定时器概念 定时器在MCU中是一个很常用的外设,其作用是可以在某个事件点触发MCU中断,告知MCU处理事情。定时器跟生活中的闹钟很类似,可以设置闹钟每天什么时候响,还能设置响的次数,是响一…

山西电力市场日前价格预测【2023-10-01】

日前价格预测 预测说明: 如上图所示,预测明日(2023-10-01)山西电力市场全天平均日前电价为254.94元/MWh。其中,最高日前电价为399.30元/MWh,预计出现在19: 00。最低日前电价为0.00元/MWh,预计出…

源码编译安装systemtap

目录 编译环境 编译步骤 编译环境 阿里云ubuntu20.04 编译步骤 1 先安装elfutils,参见我的前一篇博客 源码编译elfutils_金色熊族的博客-CSDN博客 2 下载systemtap源码 3 解压 解压后的文件夹与elfutils的文件夹应该是平行的,如下图&#xff1a…

利用mAP计算yolo精确度

当将yolo算法移植部署在嵌入式设备上,为了验证算法的准确率。将模型测试的结果保存为txt文件(每一个txt文件,对应一个图片)。此外,需要将数据集中的标签由[x,y,w,h]转为[x1,y1,x2,y2]。最后,运行验证代码 …

轻松整理电脑文件:按大小归类保存,高效管理你的数据

你是否曾经在电脑中迷失在纷繁复杂的文件海洋中?你是否曾经花费大量时间搜索需要的文件,却发现它们并不在你想找的地方?如果你也遇到了这样的问题,那么是时候采取行动,对电脑文件进行整理和归类了。 首先。进入文件批…

问答区混赏金的集合贴

此贴专记录CSDN问答社区里面,一些回答者在临近结题时胡乱回答,只为分取结题赏金的人。 为了截图方便,给回答者点赞和点踩不是对其回答的认可和不认可,只是为了方便截图而已 文章目录 第一位——夜深人静的哝玛 (PS:与本人的头像和…

【CUDA编程概念】一、什么是bank conflict?

前言 搜了不少答案,大多是在避免Bank Conflict,很难找到一个关于Bank Conflict的详细定义,这里找了些资料来尝试解释下; 一、基础概念 先简单复习下相关概念 GPU调度执行流程: SM调度单位为一个warp(一…

AI-FGNet降噪算法

上一篇文章介绍AI-CGNet降噪算法和AI-GruNet降噪算法,本篇文章介绍一个新的轻量级降噪做法AI-FGNet。 一、模型结构 AI-FGNet网络相比AI-GruNet,额外添加一层全连接实现特征的维度变换,作为频谱压缩、控制计算量的一种手段。此外&#xff0c…

Win11下无法打开丛林之狐,提示未检测到DirectX 8.1

新装的win11系统,打开丛林之狐提示未检测到DirectX 8.1. 运行dxdiag检查DirectX版本: DX版本已经是12了: 最终参考了这篇文章解决了: 罪恶都市出现XX-directx version 8.1处理方法 - 知乎 控制面板 > 程序 > 启用或关闭Wi…

(三) gitblit管理员手册

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 权限管理创建仓库时创建用户普通用户 管理员用户访问限制和访问权限仓库创建权限分配 Teams普通组管理员组 参考资料 权限管理 创建仓库时 选择指定的人员查看,克隆,推送 不允许fork 对应Anonymo…

9.30小任务

消息队列实现进程之间通信方式 实现了父子进程之间的通信 #include <myhead.h>//消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds;#define SIZE sizeof(Msg_ds)-sizeof(long) //正文大小int main(int arg…

从私服上拉取jar包,就是拉取不下来

明明私服上有jar包&#xff0c;但是就是拉取不下来&#xff0c;原因有很多种&#xff0c;我这里分享一种情况&#xff0c;我是因为idea的maven配置忘记改过来了&#xff0c;如下&#xff1a; 因为setting配置文件是拷贝来的&#xff0c;嫌麻烦&#xff0c;配置文件里的本地仓库…

10链表-单链表构造LinkedList

目录 LeetCode之路——707. 设计链表 分析&#xff1a; Code&#xff1a; LeetCode之路——707. 设计链表 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;n…

如何写一份完整的职业规划书?

写职业规划书&#xff0c;确定今后几年的一个发展方向&#xff08;职业规划建议越早越好&#xff09;&#xff0c;帮助自己收获更大的成功。普通的职业规划书书写起来十分简单&#xff0c;没有想象中那样复杂&#xff0c;只需要包括基本的部分&#xff0c;就可以轻轻松松完成。…

Go-Ldap-Admin | openLDAP 同步钉钉、企业微信、飞书组织架构实践和部分小坑

目录 一、Docker-compose快速拉起demo测试环境 二、原生部署流程 安装MySQL&#xff1a;5.7数据库 安装openLDAP 修改域名&#xff0c;新增con.ldif 创建一个组织 安装OpenResty 下载后端 下载前端 部署后端 部署前端 三、管理动态字段 钉钉 企业微信 飞书 四、…