【Git】分支管理
文章目录
- 一、理解分支
- 二、创建、切换、合并分支
- 三、删除分支
- 四、合并冲突
- 五、合并模式
- 六、分支策略
- 七、bug分支
- 八、强制删除分支
努力经营当下 直至未来明朗!
一、理解分支
-
HEAD指向的是master分支,master中指向的是最新一次的提交,也就是master中存储得到最新一次提价的commit_id。
-
在gitcode仓库底下,
cat .git/refs/heads/master
就可以打印出master中的内容,即最新一次提交的commit_id。
git cat-file -p [commit_id]
就可以打印出该commit_id的相关信息
-
master主分支:其实就相当于是每次提交的结果锁串成的线。
二、创建、切换、合并分支
- 查看当前本地仓库有哪些分支:
git branch
- HEAD其实是可以指向其他分支的,被指向的分支就是当前正在工作的分支。
- master就说明当前工作的分支就是master
-
创建本地分支:
git branch [分支名]
-
新建的分支是指向创建该分支的时候所站的版本上的,即该版本的commit_id
-
切换分支,重新设置当前的工作分支,即HEAD指向新的分支
git checkout [分支名]
-
在dev分支上提交的内容在master分支上找不到,因为master和dev分支都是指向在各自分支上的最新提交。
-
合并分支:首先看目前在哪个分支上
git branch
-> 切换到想要合并到的分支上git checkout [分支名]
-> 合并分支git merge [被合并的分支]
-> 此时该分支就指向了被合并分支的最新一次提交
(fast-forward是快速模式)
三、删除分支
-
在合并了分支之后,被合并的分支就可以被删除了
git branch -d [要删除的分支]
-
注意:只能在其他分支上删除该分支,本分支上不能删除本分支。
-
因为创建、合并和删除分支非常快,所以Git鼓励使用分支完成某个任务,合并后再删除分支,这和直接在master分支上工作的效果是一样的,但是过程更安全。
四、合并冲突
-
在merge合并分支的时候是可能出现冲突的。
-
如果相对分支A上的某个文件file中的内容进行升级,此时就需要重新创建一个分支B对文件file中的内容进行修改,而与此同时分支A也对文件file中的内容进行了修改;而分支B最后是要合并到分支A上的,此时就会出现合并冲突问题。
-
创建一个分支并将当前分支切换到新分支上
git checkout -b [新分支]
-
git add .
将当前目录下的所有修改提交到暂存区 -
不同分支对同一个文件修改之后进行分支的合并,此时就会出现合并冲突
-
vim [文件名] 可以进入文件查看冲突内容,其中 <<< >>>中的内容即是冲突内容。
-
想要保留的是什么内容是由开发人员决定的,所以开发人员就要进行手动修改文件内容并进行保存,然后重新进行add和commit,此时保存的就是解冲突之后的结果。
-
解完冲突并合并分支,master存储的是最新一次的提交,即接完冲突之后的提交
-
git log
搭配参数的使用
git log --graph --abbrev-commit
将提交commit进行图视化
五、合并模式
-
fast forward模式(ff模式)进行合并分支,使用该种模式合并分支的时候,master会指向最新合并的分支指向的commit_id,也就分不清该次提交是merge还是正常commit来的。
-
no-ff模式:可以更加方便地追溯到此次的提交的是merge进来的还是正常commit,方便追溯到对应的人。(推荐使用)
git merge --no-ff -m "描述信息" [被合并的分支名]
六、分支策略
master分支是稳定的,一般用于存储线上环境的代码。
七、bug分支
- 当线上环境(即master主分支)上出现bug的时候,不要直接在master主分支上进行修改,而是在本地专门创建一个修复master分支上bug的分支,然后测试团队测试之后再将该代码分支合并到master主分支上。
- 不能在master主分支上直接进行bug修复的原因:可能改出更大的bug,对线上环境影响较大。
- 模拟环境:开发在dev2分支上开发了部分代码,但是还未提交,此时master主分支上出现了bug。此时需要新建一个专门的修复bug的分支来修复bug,则首先切到master分支上来新建一个修复bug的分支。
1)dev2分支上修改的代码在master分支的工作区中出现,即影响了master分支。
2)不想影响master分支,此时将当前分支切换到dev2分支上,并将工作区中的内容进行储存操作git stash
-> 可以使用tree .git/进行查看,发现多了refs/stash来存储工作区中的内容 -> 此时工作区中就是干净的
3)stash中存储的是已经被git追踪管理的内容。因为file3并没有提交到git中被git追踪管理,所以是不能在stash中进行存储的,即git stash命令不可用。
4)此时就切换到master分支上新建一个修复bug的分支 -> 并对有bug的文件进行修改,修改完成之后提交到该分支上 -> 切换到master主分支上并将修复分支上的代码合并到master主分支上
5)dev2分支还没有开发完成,此时就需要切换回dev2分支继续进行开发,但是cat 该文件之后发现该文件中之前开发了部分的代码不见了,这些内容已经被放到了stash中进行存储 -> 此时就需要将stash中的内容恢复到该dev2分支的该文件中进行继续开发
① git stash list
可以查看当前stash中存储的内容
② git stash pop
可以将stash中存储的内容恢复到该分支的文件中
6)此时就可以继续对dev2分支进行开发,开发完成之后就可以对代码进行提交,但是此时的状态如下,直接将dev2分支合并到master分支上可能会存在冲突
7)为了避免将dev2分支合并到master主分支之后影响master住分支,就将master主分支合并到dev2分支上,这样合并后即使有问题也可以在本地分支dev2上进行多次修改测试,不会影响master主分支中的代码 -> 将问题在dev2分支上解决完之后再将代码合并到master主分支上
8)修复并合并完分支之后就可以将该修复分支进行删除了
git branch -d [分支名]
八、强制删除分支
- 在分支A已经被merge了之后想要删除分支A:
git branch -d [分支A]
- 若分支B还没有被merge过,此时直接该分支B是受保护的,不能直接使用
git branch -d [分支B]
进行删除。 - 如果想要删除还没有被合并的分支每次是就需要强心进行删除,即
git branch -D [分支名]
,但是注意:不能在当前分支上删除当前分支,必须要进行分支的切换!!!
相关文章:
【Git】分支管理
文章目录 一、理解分支二、创建、切换、合并分支三、删除分支四、合并冲突五、合并模式六、分支策略七、bug分支八、强制删除分支 努力经营当下 直至未来明朗! 一、理解分支 HEAD指向的是master分支,master中指向的是最新一次的提交,也就是m…...
玩转单元测试之gtest
引言 程序开发的时候,往往需要编写一些测试样例来完成功能测试,以保证自己的代码在功能上符合预期,能考虑到一些异常边界问题等等。 gtest快速入门 1.引入gtest # 使用的是1.10版本,其他版本可根据需要选择 git clone -b v1.1…...
Tomcat 一次请求的生命周期
在使用 Tomcat 的时候,我们只需要在 Servlet 实现类中写我们的业务逻辑代码即可,不需要管 Socket 连接、协议处理要怎么实现,因为这部分作为不经常变动的部分,被封装到了 Tomcat 中,程序员只需要引入 Tomcat 中即可&am…...
spring cloud gateway中配置uri
gateway中配置uri配置有三种方式: websocket方式:uri: ws://localhost:9000http方式: uri: http://localhost:8130/lb注册中心配置方式(注册的服务名称): uri: lb://monitor-ms gateway的lb方式识别的服务名称命名规则: "[…...
使用NAudio录制wav音频
NAudio NAudio官网 环境 Unity2019.4.34f1c1 Window10 NAudio 1.10 .Net 3.5 录制音频 WaveInEvent类可录制音频 StartRecording方法 启用录制StopRecording方法 停止录制DataAvailable 录制中回调RecordingStopped 录制结束回调 WaveFileWriter类可存储音频 Write方法…...
数据结构之动态内存管理机制
目录 数据结构之动态内存管理机制 占用块和空闲块 系统的内存管理 可利用空间表 分配存储空间的方式 空间分配与回收过程产生的问题 边界标识法管理动态内存 分配算法 回收算法 伙伴系统管理动态内存 可利用空间表中结点构成 分配算法 回收算法 总结 无用单元收…...
【汇编语言】栈及栈操作的实现
文章目录 栈结构栈操作栈的小结 栈结构 栈是一种只能在一端插入或删除的数据结构;栈有两个基本的操作:入栈和出栈; 入栈:将一个新的元素放到栈顶;出栈:从栈顶取出一个元素; 栈的操作规则&#…...
【JavaEE】面向切面编程AOP是什么-Spring AOP框架的基本使用
【JavaEE】Spring AOP(1) 文章目录 【JavaEE】Spring AOP(1)1. Spring AOP 是什么1.1 AOP 与 Spring AOP1.2 没有AOP的世界是怎样的1.3 AOP是什么 2. Spring AOP 框架的学习2.1 AOP的组成2.1.1 Aspect 切面2.1.2 Pointcut 切点2.1…...
SpringBoot+微信小程序奶茶在线点单小程序系统 附带详细运行指导视频
文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBoot微信小程序框架开发的奶茶在线点单小程序系统。首先,这是一个前后端分离的项目ÿ…...
【支付宝小程序】开发基础--文件结构教程
🦖我是Sam9029,一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 🐱🐉🐱🐉恭喜你,若此文你认为写的不错,不要吝啬你的赞扬,求收…...
LLM 生成式配置的推理参数温度 top k tokens等 Generative configuration inference parameters
在这个视频中,你将了解一些方法和相关的配置参数,这些参数可以用来影响模型在下一个词生成时的最终决策方式。如果你在Hugging Face网站或AWS的游乐场中使用过LLMs,你可能已经看到了这些控制选项,用来调整LLM的行为。每个模型都暴…...
npm的镜像源和代理的查看和修改
一、镜像源 查询当前镜像源 npm get registry 设置为淘宝镜像 npm config set registry http://registry.npm.taobao.org/ 设置回默认的官方镜像 npm config set registry https://registry.npmjs.org/ 设置electron为淘宝镜像 npm config set ELECTRON_MIRROR "h…...
IP库新增经过实践的Verilog 库
网上严重缺乏实用的 Verilog 设计。Project F 库是尝试让 FPGA 初学者变得更好部分。 设计包括 Clock- 时钟生成 (PLL) 和域交叉Display - 显示时序、帧缓冲区、DVI/HDMI 输出Essential- 适用于多种设计的便捷模块Graphics- 绘制线条和形状Maths- 除法、LFSR、平方根、正弦....…...
SLAM-VIO视觉惯性里程计
SLAM 文章目录 SLAM前言IMU与视觉比较单目视觉缺陷:融合IMU优势:相机-IMU标定松耦合紧耦合基于滤波的融合方案:基于优化的融合方案: 前言 VIO(visual-inertial odometry)即视觉惯性里程计,有时…...
分布式 RPC 框架入门
分布式 RPC 框架入门 警告 torch.distributed.rpc 程序包是实验性的,随时可能更改。 它还需要 PyTorch 1.4.0才能运行,因为这是第一个支持 RPC 的版本。 本教程使用两个简单的示例来演示如何使用 torch.distributed.rpc 软件包构建分布式训练…...
Spring boot与Spring cloud 之间的关系
Spring boot与Spring cloud 之间的关系 Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Boot,看名字就知道是Spring的引导,就是用于启动Spring的,使得Spring的学习和使用…...
报名开启 | HarmonyOS第一课“营”在暑期系列直播
<HarmonyOS第一课>2023年再次启航! 特邀HarmonyOS布道师云集华为开发者联盟直播间 聚焦HarmonyOS 4版本新特性 邀您一同学习赢好礼! 你准备好了吗? ↓↓↓预约报名↓↓↓ 点击关注了解更多资讯,报名学习...
Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!
DolphinScheduler是一个开源的分布式任务调度系统,拥有分布式架构、多任务类型、可视化操作、分布式调度和高可用等特性,适用于大规模分布式任务调度的场景。目前DolphinScheduler支持的元数据库有Mysql、PostgreSQL、H2,如果在业务中需要更好…...
matlab使用教程(17)—广度优先和深度优先搜索
1.可视化广度优先搜索和深度优先搜索 此示例说明如何定义这样的函数:该函数通过突出显示图的节点和边来显示 bfsearch 和 dfsearch 的可视化结果。 创建并绘制一个有向图。 s [1 2 3 3 3 3 4 5 6 7 8 9 9 9 10]; t [7 6 1 5 6 8 2 4 4 3 7 1 6 8 2]; G dig…...
CSerialPort教程4.3.x (2) - CSerialPort源码简介
CSerialPort教程4.3.x (2) - CSerialPort源码简介 前言 CSerialPort项目是一个基于C/C的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写,同时还支持C#, Java, Python, Node.js等。 CSerialPort项目的开源协议自 V3.0.0.171216 版本…...
【数据结构OJ题】有效的括号
原题链接:https://leetcode.cn/problems/valid-parentheses/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 这道题目主要考查了栈的特性: 题目的意思主要是要做到3点匹配:类型、顺序、数量。 题目给的例子是比较…...
Java性能分析中常用命令和工具
当涉及到 Java 性能分析时,有一系列强大的命令和工具可以帮助开发人员分析应用程序的性能瓶颈、内存使用情况和线程问题。以下是一些常用的 Java 性能分析命令和工具,以及它们的详细说明和示例。 以下是一些常用的性能分析命令和工具汇总: …...
JVM性能分析-jstat工具观察gc频率
jstat jstat是java自带的工具,在bin目录下 用法 语法:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] [kqkyyj-2 bin]$ jstat -help Usage: jstat -help|-optionsjstat -<option> [-t] [-h&l…...
mysql 查询报错 1267 - Illegal mix of collations
mysql 查询报错 1267 - Illegal mix of collations 详细报错: 1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for 主要的原因其实就是两张表的字符集不一样改一下就行了。 注: 改了表还是报错的话,那就是表内的字段没有…...
【ARM】Day6
cotex-A7核UART总线实验 1. 键盘输入一个字符‘a’,串口工具显示‘b’ 2. 键盘输入一个字符串"nihao",串口工具显示“nihao” uart.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_rcc.h" #include "stm3…...
深入理解Flink Mailbox线程模型
文章目录 整体设计processMail1.Checkpoint Tigger2.ProcessingTime Timer Trigger processInput兼容SourceStreamTask 整体设计 Mailbox线程模型通过引入阻塞队列配合一个Mailbox线程的方式,可以轻松修改StreamTask内部状态的修改。Checkpoint、ProcessingTime Ti…...
Docker搭建LNMP运行Wordpress平台
一、项目1.1 项目环境1.2 服务器环境1.3 任务需求 二、Linux 系统基础镜像三、Nginx1、建立工作目录2、编写 Dockerfile 脚本3、准备 nginx.conf 配置文件4、生成镜像5、创建自定义网络6、启动镜像容器7、验证 nginx 四、Mysql1、建立工作目录2、编写 Dockerfile3、准备 my.cnf…...
10个常见渐变交互效果
1、透明度渐变背景交互 <div class"fade-background"></div> Copy .fade-background {width: 200px;height: 200px;background: linear-gradient(to bottom, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1));transition: background 0.5s ease; }.fade-backgro…...
[线程/C]基础
文章目录 1. 线程介绍2. 创建线程2.1 线程函数2.2 创建线程 3. 线程退出4. 线程回收4.1 线程函数4.2 回收子线程数据4.2.1 使用子线程栈4.2.2 使用全局变量4.2.3 使用主线程栈 5. 线程分离6. 其他线程函数6.1 线程取消6.2 线程ID的比较 1. 线程介绍 线程是轻量级的进程&#x…...
Spring Clould 负载均衡 - Ribbon
视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) Ribbon-负载均衡原理(P14) 具体实现时通过LoaBalanced注解实现,表示RestTemplate要被Ribbon拦截处理 orderservice调用user时候,…...
房地产公司网站下载/网站seo搜索引擎优化教程
一、RPM Package Manager(RPM软件包管理器)的缩写, rpm是由RedHat开发的软件包管理方式,使用rpm可以方便的进行软件的查询、安装、升级、校验等工作,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,但是…...
网站dns解析失败/代推广app下载
文章目录 本课题的研究内容:探地雷达原理探地雷达图像预处理图像倾斜矫正均值法去背景原理与实现图像分割技术阈值分割技术的实现腐蚀与膨胀技术探地雷达杂波抑制研究与实现探地雷达合成孔径成像探地雷达目标识别总结本文为论文解读,为2008年发布的基于传统图像处理与识别论文…...
网站建设氺金手指排名15/湖南企业竞价优化
发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产…...
哪些网站可以做百科来源/企业网站建设的一般要素
template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出。 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护HTML输出免受某些攻击。 通过将模板应用于数据结构来执行模板。模板中的注释引用数…...
如何用服务器代替空间做网站/百度手机app
该文章转载自 http://fann.im/blog/2012/04/12/difference-between-objectforkey-and-valueforkey-in-nsdictionary/ 感谢原作者 从 NSDictionary 取值的时候有两个方法,objectForKey: 和 valueForKey:,这两个方法具体有什么不同呢? 先从 NS…...
浙江网站建设品牌设计/企业品牌推广
腾讯云存储团队正式发布数据加速器 GooseFS 1.4 版本(含 GooseFS 1.4.0 和 GooseFS 1.4.1 版本),该版本针对 AI、大数据场景提供了文件解压缩等便捷易用的工具,同时针对海量文件读写下的集群性能和稳定性问题进行了针对性优化&…...