Git 使用指南 --- 分支管理

2024-09-02 12:20
文章标签 管理 git 分支 使用指南

本文主要是介绍Git 使用指南 --- 分支管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

 在这篇文章中,我们将介绍 Git 分⽀管理,从分⽀创建,切换,合并,删除的整个⽣命周期,灵活进⾏各种场景下的分⽀管理,学习常⻅分⽀管理策略。


1. 理解分支

 想象一下,大学临近期末的你还是开学模样,后天就要考试了,但是你还没复习(准确地说还没开始😱)机组,计网,线代,马原…怎么办😭!你恨不得一分钟掰成两分钟用,恨不得创造几个分身帮你复习不同的科目,最后合并全部分身前去考试,那么压力就小不止一星半点!当然,你不可能做到,但是 Git 做到了😲!
 使用 Git 创建分支并行开发,不仅大大的提高了开发的效率还隔离了风险,避免不稳定的代码直接进入 master,增加了主分支的风险。


2. 创建分支

 那我们可以使用指令为 Git 创建一个分支(影分身):

git branch [name]

之后我们可以使用指令来查看存在的所有分支以及当前我们处在哪个分支:

git branch

输入这段代码后显示以下内容:
在这里插入图片描述


3. 切换分支

 如何切换到指定的分支下呢?只需要使用指令:

git checkout [name]

同时也可以是使用 git branch 来检查自己是否切换成功。

 我们在这里验证一下上一篇文章我们得出的结论 — HEAD 指向当前正在工作的分支,上篇文章因为我们只包含一个分支 master,所以无法验证,现在我们处在 dev 分支下查看 HEAD
在这里插入图片描述
可以观察到现在 HEAD 指向的是 dev,而不是 master

  现在我们进行如下操作:

  1. dev 目录下往 readme 文件添加新的一行内容
  2. 将该文件进行添加以及提交操作,保存到 dev 的版本库
  3. 切回到 master 分支,查看 readme 文件的内容

将会出现以下现象:

在这里插入图片描述

 为什么我更新的文件内容在 dev 分支下才可以显示呀,master 为什么没有呀?这是因为 新版的内容以及被 dev 分支所管理了,而 master 管理的是上一个版本的内容是不一样的!
 口说无凭,我将向大家证明一下,大家还记得 master 保存的就是当前分支下最新 的 commit id(版本),同样的 dev 也是这个道理:
在这里插入图片描述
 同时,我们对分支之间的关系也有了一个新的认识关系:
在这里插入图片描述
原来 HEAD 指向 dev 分支,自然可以看见修改的内容,现在 HEAD 指向 master 分支,肯定就看不见啦!


4. 合并分支

4.1 FF 快进模式

 当我们的分支完成了我们交给他的任务,现在我们需要他合并到主分支,需要进行以下步骤:

  1. 切换到 master 分支
  2. 使用指令进行快速切换 git merge [name]
  3. 完成分支的合并

 在这里向大家举个栗子,在主分支里我们有一个文件(已提交到版本库管理)包含以下内容:

1 read                                                                                                                                                                                                      X 1 How are you?

现在我们切换到 dev 分支写入内容:

 1 readme                                                                                                                                                                                                      X 1 How are you?2 I am fine!

同样的,我们也需要将修改后的版本提交到 dev 的版本库中进行管理。

 现在我们使用合并分支的上述步骤,我们可以得到以下信息:
在这里插入图片描述
首先,可以直观地看到内容确实合并了,我们的目的达成了。其次,这里的 Fast-forward 代表 快进模式,所谓快进模式就是 直接把 master 指向 dev 的当前提交。使用图像来描述就是这样:

在这里插入图片描述
ff模式(快进模式)虽然简便,但是存在不少缺点其中有一个就是:快进合并通过将 目标分支的指针直接移动到源分支的最新提交上,从而简化了分支历史。然而,这种简化可能过于激进,导致合并的历史信息丢失

4.2 NO-FF 非快进模式

 为了解决 FF模式 带来的缺陷,我们可以在合并时使用选项来禁用该模式,这个新的模式本质是创建一次新的提交,Git 会为这个将合并后的结果视为一个新的版本:
在这里插入图片描述
指令为:

git merge --no-ff -m "Your_msg" [name]

5. 合并冲突

 在实际进行分支合并时,不是那么简单的,分支冲突是时常发生的,就比如再上一个例子中,我们只是在 dev 分支下对 readme 文件进行了修改,万一我的 master 分支同时也对该文件进行了相应的修改呢?
 在 dev 分支下我的文件内容如下:

 1 readme                                                                                                                                                                                                      X 1 How are you?2 I am fine!

而在 master 分支下我的文件内容如下:

 1 readme                                                                                                                                                                                                      X 1 How are you?2 I am not fine, QAQ!

 现在我们再一次使用合并操作,得到以下信息:
在这里插入图片描述
这个信息告诉我们这里起冲突了,需要我们手动解决冲突,现在我们再次打开文件 readme

1 readme                                                                                                                                                                                                       X 1 How are you?2 <<<<<<< HEAD3 I am not fine, QAQ!4 =======5 I am fine!6 >>>>>>> dev

现在他向我们标注出了冲突部分,并且需要我们自己决定需要保留那一部分,我在这里删除掉 dev 的部分,保留 master 的内容!
 请记住,在解决冲突之后,还需要我们进行手动提交!!!


6. 删除分支

 当一个分支的内容被合并之后,它的任务也就达成了,自然而然也该退出了,在这里删除分支的指令为:

git branch -d [name]

但是请注意,不能处于当前分支上删除当前分支!


7. Bug 分支场景

 当你在 dev 分支上进行功能开发时,突然 master 分支上的程序在运行时出现了 Bug。这时,通常解决的解决方案是,建立一个临时用来修复 Bug 的分支。
 但是我在当前分支下的代码还没写到 1 / 4 呢,怎么办呢?我们可以使用 git stash 命令将当前工作区的信息进行存储起来,当以后需要时再复原。
Bug 修复好了,我回来了,我们可以使用指令 git stash list 来查看我们存储的信息,之后可以使用指令 git stash pop 将我们的信息恢复到当前工作区下。


8. 总结

 ⾸先,master 分⽀应该是⾮常稳定的,也就是仅⽤来发布新版本,平时不能在上⾯⼲活;那在哪⼲活呢?⼲活都在其他分⽀上,当你完成任务时只需要和主分支合并就好啦!

这篇关于Git 使用指南 --- 分支管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129939

相关文章

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动