【Git版本控制器】第四弹——分支管理,合并冲突,--no-ff,git stash
🎁个人主页:我们的五年
🔍系列专栏:Linux网络编程
🌷追光的人,终会万丈光芒
🎉欢迎大家点赞👍评论📝收藏⭐文章

相关笔记:
https://blog.csdn.net/djdjiejsn/category_12893502.html
前言:
分布式版本控制系统(Distributed Version Control System,简称 DVCS)是一种将代码仓库完整地复制到每个开发者本地的版本控制系统。与集中式版本控制系统(如 SVN)不同,分布式版本控制系统中的每个开发者都拥有代码仓库的完整副本,包括所有的历史记录、分支和标签等信息。
目录
1.分支
1.1认识分支:
1.2创建分支:
1.3切换分支
1.4 在分支进行代码操作
2分支合并
2.1未发生合并冲突的合并:
2.2发生冲突的合并
3.删除分支:
4.Bug分支
1.分支
1.1认识分支:
在前面就讲过每一次提交都会有记录,有一条线,这是master的主分支。然而,我们还可以创建其他的分支,进行分支操作,分支编写代码。
下面就是没其他其他分支的master分支。
git log --graph --abbrev-commit

1.2创建分支:
git branch进行创建分支,没有加名字就是查看当前所有的分支,加上就是创建分支
git branch //查看所有的分支
git branch (分支名) //创建分支
比如我查看我现在的分支:
现在只有一个分支:master分支,然后我们创建了dev1,dev2分支。
然后就再次用git branch进行查看分支就有三个了。
* 绿色的就是当前所在的分支。*表示HEAD指向的哪个分支。


1.3切换分支
前面的git checkout -- 是撤销工作区的修改,撤销到最近一次的暂存区或者版本库。
但是不加--的意思就是分支切换了。
git checkout (分支名) //分支切换

此时的HEAD就指向dev1分支了。

1.4 在分支进行代码操作
我们在dev1分支进行代码编写,然后完成一次add,commit操作以后,进行的就是dev分支进行操作。而且在其他分支下是看到这个新增的代码的。
在dev1新增,并且保存,在master分支,还有dev2分支都是看不到的。

要想在master分支看到,就要在master进行合并。
2分支合并
2.1未发生合并冲突的合并:
使用git merge进行分支合并。
git merge (分支名)

然后我们进行查看,就可以看到dev分支的内容了。
这时候就是正常的合并,没有出现合并冲突的。
特别注意一下Fast-forward这个,ff合并,不会产生新的commit信息。
下面的最新一次信息还是devcommit产生的信息。

这个用图示来解释就是master直接指向dev1分支了。
master直接就指向最新一次的dev1进行的commit。

简化的就是这样了:

正常情况下 ,merge如果没有发生冲突,也没有写--no-ff 进行合并,那么就是Fast forward模式进行合并,这种合并不会产生新的commit。这种合并,如果以后把分支删除了,就分辨不出来这部分是merge到master里面来的,还是正常master,commit提交的。所以我们不建议使用Fast forward模式进行操作。而是每次merge时都要--no-ff,表示不要进行Fast forward模式进行合并。
加上这个选项以后,就要-m "commit描述信息".
这样就会形成一个新的commit。
2.2发生冲突的合并
这种情况就要手动进行代码修改,然后再进行一次commit。
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.

提示信息说,自动合并出错,需要手动fix,然后进行commit最后的结构。
然后我们打开我们的file1
aaaaaaaaaaaaaaaaaa
dev1 add bbbbbbbbb
<<<<<<< HEAD
master master master
=======
dev dev dev dev dev
>>>>>>> dev
<<<<<<<<HEAD到=======是当前分支的内容。
=======到>>>>>>dev是dev分支修改的内容。
然后我们想要怎么修改,我们手动进行修改,再进行commit。
如果没有发生冲突,也是可以用--no-ff 进行mege形成新的commit的。

3.删除分支:
当分支合并以后,分支就基本没用了,我们就可以把分支删除了,使用的命令是:
git branch -d (已经合并的分支名)
这个只能删除已经合并的分支。
不能删除还没有合并的分支。
删除没有合并的分支,要d变为D才能删除。
git branch -D (未合并的分支名)
4.Bug分支
git stash的作用是保护还没有commit的工作区和暂存区。
git stash 的主要用途:
临时保存更改:当你正在开发某个功能或修复某个问题时,突然需要切换到另一个任务,但又不想提交当前未完成的更改。
清理工作区:在切换分支或合并代码之前,需要清理工作区,但又不想丢失当前的更改。
快速切换任务:在多个任务之间快速切换,而不需要频繁提交和回滚更改。

//保存当前更改到 Stash
git stash//切换到修复问题的分支
git checkout fix-branch//修复问题并提交
git add .
git commit -m "Fix urgent issue"//切换回原来的分支
git checkout feature-branch//重新应用保存的更改
git stash apply
//将stash放到工作区
git stash pop

相关文章:
【Git版本控制器】第四弹——分支管理,合并冲突,--no-ff,git stash
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 相关笔记: https://blog.csdn.net/djd…...
Elasticsearch除了用作查找以外,还能可以做什么?
前言 Elasticsearch用于实时数据分析、日志存储、业务智能等。还有日志与监控、多租户和安全性。以及应用场景包括日志分析、公共数据采集、全文搜索、事件数据、数据可视化。处理错误拼写和支持变体,不过这些可能还是属于搜索优化。企业搜索、日志管理、应用监控、…...
Gradio全解11——使用transformers.agents构建Gradio UI(6)
大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(6) 前言本篇摘要11. 使用transformers.agents构建Gradio UI11.6 通过agents构建Gradio UI11.6.1 ChatMessage数据类1. 数据结构2. 例程11.6.2 构建Gradio UI示例1. 代码及运行2. 代码解读参考文献前言 本…...
自定义实现简版状态机
状态机(State Machine)是一种用于描述系统行为的数学模型,广泛应用于计算机科学、工程和自动化等领域。它通过定义系统的状态、事件和转移来模拟系统的动态行为。 基本概念 状态(State):系统在某一时刻的特…...
算法常见八股问题整理
1.极大似然估计和交叉熵有什么关系 在分类问题中,当我们使用softmax函数作为输出层时,最大化对数似然函数实际上等价于最小化交叉熵损失函数。具体来说,在多分类情况下,最大化该样本的对数似然等价于最小化该样本的交叉熵损失。 交…...
关于GeoPandas库
geopandas buildings gpd.read_file(shapefile_path) GeoDataFrame 对象有一个属性叫做 sindex 空间索引通常是基于 R-树 或其变体构建的,这些数据结构专为空间查询优化,可以显著提高查询效率,尤其是在处理大型数据集时。 buildings_sin…...
【漫话机器学习系列】103.学习曲线(Learning Curve)
学习曲线(Learning Curve)详解 1. 什么是学习曲线? 学习曲线(Learning Curve)是机器学习和深度学习领域中用于评估模型性能随训练过程变化的图示。它通常用于分析模型的学习能力、是否存在过拟合或欠拟合等问题。 从…...
电商运营中私域流量的转化与变现:以开源AI智能名片2+1链动模式S2B2C商城小程序为例
摘要 电商运营的核心目标在于高效地将产品推向市场,实现私域流量的转化和变现。本文以“罗辑思维”的电商实践为背景,探讨了私域流量变现的重要性,并深入分析了开源AI智能名片21链动模式S2B2C商城小程序在电商运营中的应用与价值。通过该模式…...
Python常见面试题的详解19
1. 如何使用Django 中间件 Django 中间件宛如一个灵活且强大的插件系统,它为开发者提供了在请求处理流程的不同关键节点插入自定义代码的能力。这些节点包括请求抵达视图之前、视图完成处理之后以及响应即将返回给客户端之前。借助中间件,我们可以实现诸…...
Python 数据类型转换
目录 整数(int)与浮点数(float)之间的转换 (1)int():将浮点数或字符串转换为整数 (2)float():将整数或字符串转换为浮点数 字符串(str…...
进程概念、PCB及进程查看
文章目录 一.进程的概念进程控制块(PCB) 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序,而程序是存放在磁盘的,cpu要想执行程序的指…...
PyEcharts 数据可视化:从入门到实战
一、PyEcharts 简介 PyEcharts 是基于百度开源可视化库 ECharts 的 Python 数据可视化工具,支持生成交互式的 HTML 格式图表。相较于 Matplotlib 等静态图表库,PyEcharts 具有以下优势: 丰富的图表类型(30)动态交互功…...
RT-Thread+STM32L475VET6——ADC采集电压
文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟,并修改时钟树1.2 打开ADC1的通道3,并配置为连续采集模式(ADC根据自己需求调整)1.3 打开串口1.4 生成工程 2. 配置ADC2.1 打开ADC驱动2.2 声明ADC2.3 剪切stm…...
easyexcel 2.2.6版本导出excel模板时,标题带下拉框及其下拉值过多不显示问题
需求背景:有一个需求要做下拉框的值有100多条,同时这个excel是一个多sheet的导入模板 直接用easyexcel 导出,会出现下拉框的值过多,导致生成出来的excel模板无法正常展示下拉功能 使用的easyexcel版本:<depende…...
树(数据结构·)
树(数据结构篇) 里面没有结点时,称之为空树 树型结构是一对多的形式 深度优先遍历: 所谓的DFS,也就是说每次都尝试向更深的节点走,也就是一条路走到黑 当一条路走完,走到…...
XUnity.AutoTranslator-deepseek——调用腾讯的DeepSeek V3 API,实现Unity游戏中日文文本的自动翻译
XUnity.AutoTranslator-deepseek 本项目通过调用腾讯的DeepSeek V3 API,实现Unity游戏中日文文本的自动翻译。 准备工作 1. 获取API密钥 访问腾讯云API控制台申请DeepSeek的API密钥(限时免费)。也可以使用其他平台提供的DeepSeek API。 …...
谈谈 ES 6.8 到 7.10 的功能变迁(1)- 性能优化篇
前言 ES 7.10 可能是现在比较常见的 ES 版本。但是对于一些相迭代比较慢的早期业务系统来说,ES 6.8 是一个名副其实的“钉子户”。 借着工作内升级调研的任务东风,我整理从 ES 6.8 到 ES 7.10 ELastic 重点列出的新增功能和优化内容。将分为 6 个篇幅给…...
[250222] Kimi Latest 模型发布:尝鲜最新特性与追求稳定性的平衡 | SQLPage v0.33 发布
目录 Kimi Latest 模型发布:尝鲜最新特性与追求稳定性的平衡SQLPage v0.33 发布:使用 SQL 构建自定义 UI 和 API! Kimi Latest 模型发布:尝鲜最新特性与追求稳定性的平衡 Kimi 开放平台推出全新模型 kimi-latest,旨在…...
深入理解设计模式之解释器模式
深入理解设计模式之解释器模式 在软件开发的复杂世界中,我们常常会遇到需要处理特定领域语言的情况。比如在开发一个计算器程序时,需要解析和计算数学表达式;在实现正则表达式功能时,要解析用户输入的正则表达式来匹配文本。这些场景都涉及到对特定语言的解释和执行,而解…...
深入理解设计模式之代理模式
深入理解设计模式之代理模式 在软件开发的复杂体系中,我们常常会遇到这样的情况:需要控制对某个对象的访问,或者在访问对象前后添加一些额外的处理逻辑,又或者希望在不改变原对象代码的基础上扩展其功能。代理模式(Pr…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...
Element-Plus:popconfirm与tooltip一起使用不生效?
你们好,我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip,产品要求是两个需要结合一起使用,也就是鼠标悬浮上去有提示文字,并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...
华为OD机考- 简单的自动曝光/平均像素
import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...
