git的分支管理

✨前言✨

📘 博客主页:to Keep博客主页
🙆欢迎关注,👍点赞,📝留言评论
⏳首发时间:20246月19日
📨 博主码云地址:博主码云地址
📕参考书籍:《C++ Primer》《C++编程规范》
📢编程练习:牛客网+力扣网
**由于博主目前也是处于一个学习的状态,如有讲的不对的地方,请一定联系我予以改正!!!

Git中的分支

  • 1 理解分支
  • 2 创建与切换分支
  • 3 合并分支
  • 4 删除分支
  • 5 合并冲突
  • 6 分支策略管理
  • 7 BUG分支
  • 8 删除临时分支

1 理解分支

在版本回退⾥,我们已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀。HEAD就不是指向提交,而是指向当前所在的分支!我们可以结合下图来理解:
在这里插入图片描述
也就是说,随着我们不断的提交,master分支也就会越来越长!

2 创建与切换分支

有下面两种方法:

第一种:

  • git branch 分支名 //创建分支
  • git checkout 分支名 //切换到该分支上
    在这里插入图片描述

第二种:

  • git checkout -b 分支名 //创建分支并且切换到该分支上
    在这里插入图片描述

查看分支的命令

git branch -a //查看有多少个分支,以及可以看到当前处于那个分支
在这里插入图片描述

我们学会了创建和切换分支,如果我们在dev分支上对某个文件进行操作,然后进行add,commit一系列操作后,在切换回master分支,我们可以发现对dev分支上改动的文件,在master分支上是看不见的,这是为什么呢?那是因为dev对应的才是最新的提交,而master并不是在最新的提交时间线上,所以就会看不到提交!如下图所示:
在这里插入图片描述

3 合并分支

为了使得master分支上可以看到最新的提交,我们可以通过将dev分支合并到master分支上!

git merge 分支名 //把该分支合并到当前所在的分支
在这里插入图片描述

我们可以发现这里有一个fast-forward,这个是分支的合并方式,在这里就是将master指向dev当前的提交,具体有哪些常见方式,我们在后面后介绍到的!这里有这样一个印象就行了!

4 删除分支

git branch -d 分支名

就是将不在使用的分支删除掉即可!原理图如下所示:
在这里插入图片描述

5 合并冲突

我们接下来看这样的一个场景,我们在master分支上对某个文件(本文是创建file1文件进行实验)进行修改并且提交,而在dev分支上对同一个文件进行修改并且提交!场景的原理图如下图所示:
在这里插入图片描述
在上述情况下进行合并,git只能试图把各自的修改合并起来,但是这种合并就有可能会出现冲突!我们使用合并命令:
在这里插入图片描述
出现上述修改冲突然后需要提交修改后的结果就说明出现了合并冲突,如何解决这样的一个冲突呢?我们可以打开冲突的文件:
在这里插入图片描述
我们可以发现的是Git会⽤<<<<<<<,=======,>>>>>>>来标记出不同分⽀的冲突内容,我们只需要处理掉这个冲突,在进行add,commit操作进行提交就行了!此时的原理图如下所示:
在这里插入图片描述
另外,我们还可以通过以下命令来查看分支的合并情况!

git log --graph --pretty=oneline --abbrev-commit

6 分支策略管理

在分支合并哪里,我们看到了fast-forward的合并方式,它是怎么合并的呢?它就是直接将master指针指向了dev指针所指向的地方,但是利用这种合并方式,会有一个问题,就是我们把dev分支删除了之后,我们分不清master是正常提交的,还是通过fast-forward方式进行合并得到的!也就是说会省略掉分支信息!但是在合并冲突哪里,就不会出现这样的问题,那是因为我们master有新的提交,dev也有新的提交,然后我们要对冲突处理最后提交!简单来说就是就是不是采用fast-forward方式进行合并!那么如何解决这个问题呢?在git中我们可以禁止使用fast-forward方式进行分支的合并!命令如下:

  • git merge --no-ff -m “合并说明” 分支名

–no-ff 参数,表⽰禁⽤ Fast forward 模式。禁⽤ Fast forward 模式后合并会创建⼀个新的 commit ,所以加上 -m 参数,把描述写进去!此时我们可以图解一下禁用与不禁用fast-forward的区别:
在这里插入图片描述
分支策略:在实际的开发中,master分支上存放的应该是稳定版本的代码,我们一般都是利用dev分支(可以存在多个开发的分支,多人共同协作开发)进行开发,在本地仓库上,我们是将master分支合并到dev上,进行代码测试,没问题之后,在合并到master分支上,然后在上传到远端仓库上进行部署!

7 BUG分支

顾名思义,其实就是专门帮助我们修复bug的分支,假如我们在dev分支上代码开发只进行了一部分,我们还不能进行提交,而master分支又出现了bug,又不想让这部分代码丢失,我们该怎么处理呢?我们应当使用如下命令,来隐藏工作区的内容,如果不隐藏,在master分支上的工作区也是看的见的(包括在BUG分支上),这个是我们不希望看到的,所以我们需要进行隐藏,在修复完bug之后再进行恢复!

  • git stash //隐藏工作区中内容
  • git status //查看工作区的状态

然后我们在创建BUG分支,修改bug,修改完之后,我们先将master分支合并到bug分支上进行测试,然后我们在合并到master分支上,然后我们在切换回dev分支,使用如下命令,查看隐藏工作现场:

  • git stash list

然后我们在利用下面的命令进行恢复现场,

  • git stash pop stash@{0} //删除指定的内容,不带红色的,默认删除的是第一个

恢复的同时会把stash也删了,我们还有另外一种恢复现场的方式,采⽤ git stash apply 恢复,但是恢复后,stash内容并不删除,我们需要⽤git stash drop stash@{0}来删除指定的内容;我们也可以多次stash,恢复的时候,先⽤ git stash list 查看,然后恢复指定的stash,⽤命令git stash apply stash@{0}!

8 删除临时分支

这种情况,我们创建了一个分支,开发了对应的代码并且已经提交了,但是还没有合并master分支,对于这种临时分支,我们要采用强制删除!

git branch -D 分支名

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

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

相关文章

【TB作品】MSP430G2553,单片机,口袋板, 单相交流电压、电流计设计

题5 单相交流电压、电流计设计 设计基于MSP430的单相工频交流电参数检测仪。交流有效值0-220V&#xff0c;电流有效值0-40A。电压、电流值经电压、电流传感器输出有效值为0-5V的交流信号&#xff0c;传感器输出的电压、电流信号与被测电压、电流同相位。 基本要求如下 &#xf…

Linux实时查看Java接口数据

1.Linux实时查看Java接口数据的方法 在Linux系统中实时查看Java接口数据通常涉及几个步骤&#xff1a; &#xff08;1&#xff09;编写Java应用程序&#xff1a;首先&#xff0c;你需要有一个Java应用程序&#xff0c;它暴露了一个或多个HTTP接口。这些接口应该返回你想要实时…

php百度云账户余额查询API示例

1、官方文档地址&#xff1a;账户余额查询 请求结构 POST /v{version}/finance/cash/balance HTTP/1.1 Host: billing.baidubce.com ContentType: application/json; charsetutf-8 Content-Length: <Content_Length> Authorization: authorization string 请求头域 …

ubuntu安装本地版overleaf并配置Docker

安装Docker 参考https://blog.csdn.net/2201_76100073/article/details/137025119 更新软件包 sudo apt update sudo apt upgradedocker依赖 sudo apt-get install ca-certificates curl gnupg lsb-release添加docker密钥 curl -fsSL http://mirrors.aliyun.com/docker-ce…

05、部署 YUM 仓库及NFS 共享服务

目录 5.1 部署YUM软件仓库 5.1.1 准备网络安装源&#xff08;服务器端&#xff09; 1、准备软件仓库目录 2、安装并启用vsftpd服务 5.1.2 配置软件仓库位置&#xff08;客户端&#xff09; 5.2 使用yum工具管理软件包 5.2.1 查询软件包 1、yum list——查询软件包列表 …

Python 3 函数

Python 3 函数 函数是Python编程语言的核心组成部分&#xff0c;它们允许我们封装代码块&#xff0c;使其可重用&#xff0c;模块化&#xff0c;并易于维护。在Python 3中&#xff0c;函数的使用和定义都有一些特定的语法和规则。本文将详细介绍Python 3中的函数&#xff0c;包…

DGit的使用

将Remix连接到远程Git仓库 1.指定克隆的分支和深度 2.清理&#xff0c;如果您不在工作区上工作&#xff0c;请将其删除或推送至 GitHub 或 IPFS 以确保安全。 为了进行推送和拉取&#xff0c;你需要一个 PAT — 个人访问令牌 当使用 dGIT 插件在 GitHub 上推送、拉取、访问私…

网关助力边缘物联网

网关助力边缘物联网 在探讨网关如何助力边缘物联网&#xff08;IoT&#xff09;的议题时&#xff0c;我们不得不深入分析这一技术交汇点的复杂性与潜力。边缘计算与物联网的融合&#xff0c;通过将数据处理与分析能力推向网络边缘&#xff0c;即数据生成的地方&#xff0c;极大…

高企如何提高通过率?2024年成都市高新技术企业认定条件和申报提前规划

一、知识产权 1.知识产权布局“前置化” 公司申报高新技术企业在知识产权上要注意知识产权数量和质量双达标。 注&#xff1a;知识产权是高企申报的重要条件&#xff0c;同时也是认定评审的主要得分项。总分100分&#xff0c;其中60分与知识产权相关&#xff08;知识产权情况…

【JVM】常⽤的命令⾏性能监控和故障处理⼯具

在Java应用程序的开发和维护过程中&#xff0c;性能监控和故障处理是至关重要的环节。为了更好地进行这些任务&#xff0c;Java生态系统提供了多种命令行工具。以下是一些常用的性能监控和故障处理工具的详细介绍&#xff1a; 1. jps (Java Virtual Machine Process Status To…

接口性能提升秘籍:本地缓存的总结与实践

&#x1f345;我是小宋&#xff0c; 一个只熬夜但不秃头的Java程序员。 &#x1f345;关注我&#xff0c;带你轻松过面试。提升简历亮点&#xff08;14个demo&#xff09; . . &#x1f30f;号&#xff1a;tutou123com。拉你进面试专属群。 优雅的接口调优之本地缓存优化 接口…

Spring中网络请求客户端WebClient的使用详解

Spring中网络请求客户端WebClient的使用详解_java_脚本之家 Spring5的WebClient使用详解-腾讯云开发者社区-腾讯云 在 Spring 5 之前&#xff0c;如果我们想要调用其他系统提供的 HTTP 服务&#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问&#xff0c;不过由于 …

初识es(elasticsearch)

初识elasticsearch 什么是elasticsearch&#xff1f;&#xff1a; 一个开源的分部署搜索引擎、可以用来实现搜索、日志统计、分析、系统监控等功能。 什么是文档和词条&#xff1f; 每一条数据就是一个文档对文档中的内容进行分词&#xff0c;得到的词语就是词条 什么是正向…

【elementui源码解析】如何实现自动渲染md文档-第四篇

目录 1.前言 2.md-loader - index.js 1&#xff09;md.render() 2&#xff09;定义变量 3&#xff09;while stripTemplate stripScript genInlineComponentText 4&#xff09;pageScript 5&#xff09;return 6&#xff09;demo-block 3.总结 所有章节&#x…

HTML(9)——字体修饰

常用的字体修饰属性 属性描述font-size字体大小 单位&#xff1a;数字pxfont-weight字体粗细 单位&#xff1a;数字font-style 字体倾斜 line-height行高 单位&#xff1a;数字px/数字(当前size的倍数&#xff09;font-family字体族…

微纳米气泡发生器是微纳米气泡产生装置 未来市场需求将不断释放

微纳米气泡发生器是微纳米气泡产生装置 未来市场需求将不断释放 微纳米气泡发生器即微纳米气泡发生设备&#xff0c;是一种将水和气体混合并产生微纳米气泡的设备。微纳米气泡是指直径在100μm以下的气泡&#xff0c;分为纳米气泡和微米气泡。   微纳米气泡发生器主要由发生设…

录屏录音两不误!电脑录屏录音软件推荐(3款)

在数字化时代&#xff0c;电脑录屏录音软件已成为教学、演示、会议记录等领域不可或缺的工具。它们能够捕捉屏幕上的每一个动作&#xff0c;同时录制音频&#xff0c;为用户提供直观、生动的视听材料。本文将详细介绍三种常用的电脑录屏录音软件&#xff0c;帮助读者了解并掌握…

Flink parallelism 和 Slot 介绍

Flink Parallelism介绍 在Apache Flink中&#xff0c;Parallelism&#xff08;并行度&#xff09;是一个核心概念&#xff0c;它决定了Flink任务&#xff08;Task&#xff09;的并行执行程度。Parallelism指的是在Flink应用程序中&#xff0c;一个算子&#xff08;Operator&am…

误删的文件不在回收站如何找回?6个恢复秘诀分享!

“我刚刚误删了一些文件&#xff0c;但是在回收站中没有看到这部分文件&#xff0c;这种情况下还有方法可以找回误删的文件吗&#xff1f;在线等一个答案&#xff01;” 在数字化时代&#xff0c;文件的安全和完整性对于个人和企业都至关重要。然而&#xff0c;有时候由于疏忽或…

【Android】使用SeekBar控制数据的滚动

项目需求 有一个文本数据比较长&#xff0c;需要在文本右侧加一个SeekBar&#xff0c;然后根据SeekBar的上下滚动来控制文本的滚动。 项目实现 我们使用TextView来显示文本&#xff0c;但是文本比较长的话&#xff0c;需要在TextView外面套一个ScrollView&#xff0c;但是我…