【Git分支管理】理解分支 | 创建分支 | 切换分支 | 合并分支 | 删除分支 | 强制删除分支

news2024/9/22 4:16:56

目录

前言

0.理解分支

1.查看本地仓库存在的分支

2.HEAD指向分支

3.创建本地分支

4.切换分支

5.分支提交操作

6.合并分支

快进模式Fast-forward

7.删除分支

8.强制删除分支


本篇开始介绍下Git提供的杀手级的功能:分支管理

  • 先提交再合并

前言

在玄幻武侠村中,武林大会:赢的人可以迎娶村长的女儿。武林大会有三个月的准备时间。

基本时间线:参赛者——>练习基本功——>学习降龙十八掌——>参加比赛

此时为了赢得武林大会的几率更大,你创建了一个分身,在同时一时间线上(3个月)

参赛者——>练习基本功——>学习降龙十八掌——>参加比赛

                                     分身👇👉辟邪剑法👉👆合体

0.理解分支

根据上面例子,其实Git的提交时间线也是可以做到分支和合体的动作的。

回顾:

  • master里面存储是最新一次提交记录的commit id
  • commit id对应的是版本库中对象库中的对象的索引
  • tree后面也是一个对象指向☞每个文件的提交的详情的commit id☞每个问价详细修改内容
  • parent指向上一次提交的commit id
  • git log
  • git log --pretty=oneline
  • git status
  • git cat-file -p  跟commit id //查看maseter索引commit id的内容
  • git add 提交文件名
  • git commit -m "详细描述" 文件名
  • 对此可以画出一个提交时间线(主线),master里面存储就是最新一次提交记录的commit id
  • 提交时间线:master主分支

1.查看本地仓库存在的分支

git branch 命令展示出来当前本地仓库有哪些本地分支。

当在创建本地仓库的时候,Git会为自动创建一个本地分支:master主分支

2.HEAD指向分支

* master前面的 * 表示什么意思呢❓ 

*出现在master前面,是表示HEAD指向master分支且master主分支是当前正在工作分支。

  • HEAD指针指向master主分支。

  • HEAD指针不止可以指向master主分支,可以指向其他任意分支。

  • 被HEAD指向的分支,就是当前正在工作的分支。(之前HEAD指向master主分支,所以add/commit 操作提交 影响的都是master主分支)

3.创建本地分支

git branch 创建分支的名称 

  • HEAD还是指向master(*master 当前正在工作的分支)
  • 分支都存放在refs/heads/路径下,此刻次路径下有两个本地分支(dev /master)
  • 查看dev和master里面内容,发现无论是master还是dev里面的内容都是最新一次提交的commit id且master和dev里面的内容一摸一样的(dev的初始内容)
  • 所以:dev分支是基于master主分支最新一次提交记录 创建的

4.切换分支

 git checkout dev(需要切换分支的名称)

  • 让HEAD指向dev分支,让dev成为当前工作分支(*dev),才能在dev分支上操作

5.分支提交操作

前提:还未在dev分支上提交,ReadMe文件是只有一份,创建不同分支,对其进行修改操作,相互分支切换都是看的到的文件的改变。(只是在工作区发生改变)

还未提交【dev&master分支】 

前提:分支还未合并,在某分支上去add / commit 提交之后,只能在提交的分支才能看到,其他分支看不到改变。

  • dev分支指向最新一次的提交记录
  • 它的parent指向上次提交记录,也就是是指向master的最新一次提交。
  • 无论是dev分支还是master分支都存储的是各自提交线的最新一次提交的commit id 且他们是在不同提交时间线的
  • dev是记录master提交时间线创建的,所以有之前master分支提交时间线

提交之后【dev分支】 

提交之后【master分支】 

6.合并分支

处于A分支上:git merge B(需要合并的分支名称)

前提:分支和分支合并之后,就是都是指向最新一次提交,都可以看到修改的内容。 

  • 想要在master分支上看到新增的代码。将master和dev分支上的内容进行合并操作。

  • 如果我们想要master分支合并我们的dev分支,我们必须先切换到master分支上,然后合并dev分支。

  • 如果我们想要dev分支合并我们的master分支,我们必须先切换到dev分支上,然后合并master分支。

  • 综上,如果我们想要B上的内容出现在A上,必须先切换到A上,把B的内容合并到A上。

  • ❓Fast-forward表示快进模式是什么☞后面分支模式讲

快进模式Fast-forward

Fast-forward快进模式:意味着直接把 master的内容 改变为 dev当前最新的一次提交内容

(合并非常快是因为直接改变master里面的内容commit id即可)当然不是每次都是faster - forward快速模式还有其他模式。

7.删除分支

前提:删除A分支的时候,一定处于其他分支(B),才能删除A分支

git branch -d 删除分支名称  (-d delete)

  •  dev分支的使命:就是修改ReadMe文件,新增一行代码。
  • 最后将dev分支上面的内容合并到了master分支上,dev分支此刻的任务也就完成了。
  • 因为创建、合并和删除分⽀⾮常快,所以Git⿎励你使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全。
  • git branch -d 是merge之后,git才支持我们删除的分支
  • 在分支没有merge且进行开发和提交了,这个时候删除,git是不允许你删除的。(git认为对我们有用,所以他要保护分支,不支持删除)

【处于dev分支上】

【处于master分支上】

8.强制删除分支

前提:删除A分支的时候,一定处于其他分支(B),才能删除A分支

git branch -D 删除分支名称  (-D Delete)

  • 软件开发中,总有⽆穷⽆尽的新的功能要不断添加进来。
  • 添加⼀个新功能时,你肯定不希望因为⼀些实验性质的代码,把主分⽀搞乱了,所以,每添加⼀个新功能,最好新建⼀个分⽀,我们可以将其称之为 feature 分⽀,在上⾯开发,完成后,合并,最后,删除该 feature 分⽀。
  • 可是,如果我们今天正在某个 feature 分⽀上开发了⼀半,被产品经理突然叫停,说是要停⽌新功能的开发。虽然⽩⼲了,但是这个 feature 分⽀还是必须就地销毁,留着⽆⽤了。这时使⽤传统的 git branch -d 命令删除分⽀的⽅法是不⾏的。

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

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

相关文章

IP-Guard日志数据上传至 SYSLOG 服务器操作指南

一、功能简介 服务器支持把日志数据上传到 SYSLOG 服务器。 二、功能配置 2.1 数据目录移交设置 在服务器安装目录下 OServer3.ini 文件中,添加工具启动配置,配置五分钟内生效。 Path:设置移交目录路径,IPG 服务器会把收集完成的…

Redis④ —— 高可用

1. 主从复制 一主多从模式,采用读写分离的方式主服务器可以进行读写操作,当发生写操作时自动将写操作同步给从服务器,而从服务器一般是只读,并接受主服务器同步过来写操作命令,然后执行这条命令。主从服务器之间的命令…

jvm常用密令、jvm性能优化、jvm性能检测、Java jstat密令使用、Java自带工具、Java jmap使用

1.jps是Java虚拟机的进程状态工具,用于列出正在运行的Java进程 jps命令的使用:cmd打开直接jps 1.1不带参数: jps 默认情况下,列出所有正在运行的 Java 进程的进程 ID 和主类名。 1.2 -l:显示完整的主类名或 JAR 文件…

《故障复盘 · 数据库连接异常关闭》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

不开放80或443端口也能申请IP SSL证书!

在申请SSL/HTTPS证书时,如果不方便使用域名或者没有域名,就要申请一种特殊的SSL证书——IP SSL证书。但是一般的IP地址证书签发过程中,需要短暂开放80或者443端口才能签发成功。那么问题来了,有的实在不能开放80或者443端口&#…

keil中GD32 MCU IAP中APP的存储地址如何设置?

前面和大家聊过什么是IAP,那么IAP中APP的存储地址该如何设置呢? 以keil为例,打开工程的option选项卡: 将IROM1中的地址改为你想要保存的位置,比如0x08008000开始的位置: 这样通过keil烧录,程序…

记录|.NET上位机开发和PLC通信的实现

本文记录源自:B站视频 实验结果:跟视频做下来是没有问题的。能运行。 目录 前言一、项目Step1. 创建项目Step2. 创建动态图片展示Step3. 创建图片型按钮Step4. 创建下拉框Step1~4的效果展示Step5. 编程实体类操作类Main函数 Step1~5的效果展示Main函数 最…

[Python学习篇] Python PyMysql

什么是PyMysql PyMysql是一个纯 Python 实现的 MySQL 客户端库,允许你在 Python 程序中与 MySQL 数据库进行交互。 安装PyMysql PyMysql地址:https://pypi.org/project/PyMySQL/ pip install pymysql 使用PyMysql 连接mysql import pymysql# 数据库连…

数据库redis命令作业九

1、安装redis,启动客户端、验证。 2、string类型数据的命令操作: (1) 设置键值: (2) 读取键值: (3) 数值类型自增1: (4) 数…

【单片机毕业设计选题24064】-基于阿里云的鱼塘水质检测系统

系统功能: 主控为STM32F103C8T6,通过PH值传感器、浑浊度传感器、温度传感器采集各项水质数据,系统可设定各参数 的阈值,超过设定的阈值将通过蜂鸣器响来提醒用户做出措施,同时通过ESP-12F WIFI模块将设备连接阿里云 物联网平台…

信通院全景图发布 比瓴科技领跑软件供应链安全,多领域覆盖数字安全服务

近日,中国信息通信研究院在2024全球数字经济大会—数字安全生态建设专题论坛正式发布首期《数字安全护航技术能力全景图》(以下简称全景图)。 比瓴科技入选软件供应链安全赛道“开发流程安全管控、交互式安全测试、静态安全测试、软件成分分…

rtf是什么格式的文件?rtf格式和word的区别是什么?

RTF是什么格式的文件? RTF(富文本格式,Rich Text Format)和Word文档(以.doc和.docx为扩展名的Microsoft Word文档)是两种常用的文本文件格式。它们在文件结构、兼容性、功能和使用场景等方面存在一些显著差异。 比如…

泰迪智能科技江西大数据实验室成功案例介绍说明

高校大数据实验室作为作为支撑高校人培方案实施的核心设施,实验室的建设一定要与学科建设、人才培养充分融合,是一个包含物理空间硬件资源软件资源课程内容的系统化工程。高校在实验室规划过程中,第一要务就是从学科定位出发、结合学校的特色…

ASP.NET MVC-制作可排序的表格组件-PagedList版

环境: win10 参考: 学习ASP.NET MVC(十一)——分页 - DotNet菜园 - 博客园 https://www.cnblogs.com/chillsrc/p/6554697.html ASP.NET MVCEF框架实现分页_ef 异步分页-CSDN博客 https://blog.csdn.net/qq_40052237/article/details/106599528 本文略去…

分布式IO系统BL201 Profinet耦合器

BL201耦合器是一个数据采集和控制系统,基于强大的32 位微处理器设计,采用Linux操作系统,是一种模块化的分布式I/O系统。该系统由3部分组成:现场总线耦合器和各种类型的(数字和模拟信号以及特殊功能)I/O模块…

部署k8s 1.28.9版本

继上篇通过vagrant与virtualBox实现虚拟机的安装。笔者已经将原有的vmware版本的虚拟机卸载掉了。这个场景下,需要重新安装k8s 相关组件。由于之前写的一篇文章本身也没有截图。只有命令。所以趁着现在。写一篇,完整版带截图的步骤。现在行业这么卷。离…

C#与倍福Plc通信——使用仿真软件模拟倍福PLC运行

前言 我们在编写上位机与倍福PLC通信的过程中,有时候我们没有真实的Plc,但是我们又想提前测试与倍福PLC的通信,那么这个时候我们就可以使用倍福的仿真软件模拟PLC,然后我们上位机就可以与仿真PLC进行通信了,下面进行详细介绍: 1、下载并安装倍福PLC编程软件TwinCAT 安…

Uniapp自定义动态加载组件(2024.7更新)

1.本次介绍如何使用uniapp实现自定义动态加载Loading的组件,可以gif格式,也可以mp4格式等; 编写自定义Loading组件(CustomLoader.vue);组件中含有“动态接收图片路径”,“10秒超时未false则自动断开关闭Loading”;在全…

基于STC8H4K64TL单片机的触摸功能调试

基于STC8H4K64TL单片机的触摸功能调试 STC8H4K64TL单片机介绍STC8H4K64TL单片机管脚图(48个引脚)STC8H4K64TL单片机串口仿真与串口通信STC8H4K64TL单片机管脚图(32个引脚)STC8H4K64TL单片机管脚图(20个引脚)STC8H系列单片机管脚说明STC8H系列单片机I/O口STC8H系列单片机I…

在MoneyPrinterPlus中使用本地chatTTS语音模型

之前MoneyPrinterPlus在批量混剪,一键AI生成视频这些功能上的语音合成功能都用的是云厂商的语音服务,比阿里云,腾讯云和微软云。 云厂商虽然提供了优质的语音服务,但是用起来还是要收费。 为了各位小伙伴的钱包,现在特意给Money…