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

目录

前言

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.mzph.cn/news/873027.shtml

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

相关文章

Linux——文件目录指令、时间日期指令、搜索查找指令、压缩解压指令

目录 文件目录指令 pwd & ls 查看当前工作目录&显示当前目录所有文件及目录 cd 切换目录 mkdir & rmdir 创建&删除目录 touch 创建空文件 cp 拷贝文件/文件夹指令 rm 删除文件或文件夹 mv 移动或重命名文件 cat 查看文件 more指令 less 查看文件内容…

[激光原理与应用-115]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 19 - 主要硬件的介绍、安装与调试

目录 一、概述 1.1 前言 1.2 系统组成 1.2.1 机柜版: 1.2.2 非机柜版 1.3适用范围 1.4 工作条件 1.5 安全说明 1.6 装箱清单 二、硬件安装 2.1 光学传感器安装 2.1.1 转接件安装 2.1.2 光路校准模块的安装与光路校准 2.1.3 光学传感器的安装 2.2 通…

【学习笔记】min_25筛

背景 GDCPC2024 出题人:出这道 min25 筛是给大家增加过题数的 [呲牙][大哭][呲牙][大哭] min25筛是干啥的 快速求一个积性函数 F ( x ) F(x) F(x) 的前缀和 这个 F ( x ) F(x) F(x) 需要满足: F ( p ) ∑ i 0 a i p i F(p)\sum_{i0}a_ip^i F(p)∑…

Qt各个版本安装的保姆级教程

文章目录 前言Qt简介下载Qt安装包安装Qt找到Qt的快捷方式总结 前言 Qt是一款跨平台的C图形用户界面应用程序开发框架,广泛应用于桌面软件、嵌入式软件、移动应用等领域。Qt的强大之处在于其高度的模块化和丰富的工具集,可以帮助开发者快速、高效地构建出…

C++: 位图和布隆过滤器

目录 一、位图 1.1 概念 1.2 应用 1.3 模拟实现 1.31 把比特位上的值设置为1 1.32 把比特位上的值设置为0 1.33 检测比特位上的值是否是1 1.34 代码 二、布隆过滤器 2.1 概念 2.2 优点 2.3 缺点 2.4模拟实现 一、位图 1.1 概念 运用哈希的思想,将整型…

【前端数据层高可用架构】

前端数据层高可用架构 前后端架构模式如下图 在这个架构下,客端数据可用率计算方式: 因此整体数据可用性分析表如下: 只有在客端和 BFF 都正常的情况下数据才能可用,而这种情况占比不是很高,因此整体的用户体验就不是很好。 本次建设目标 本文的设计方案就是要解决…

Python Linux环境(Centos8)安装minicoda3+jupyterlab

文章目录 安装miniconda安装python环境启动 最近服务器检查,我下面的服务器有漏洞,不得已重装了,正好记录下怎么从零到python写代码。 安装miniconda miniconda是anconda的精简版,就是管理python环境的得力助手。 # 创建一个名…

C语言 do while循环语句练习 下

猜数字游戏实现 //猜数字游戏 //电脑产生 一个随机数&#xff08;1-100) //猜数字 //猜大了 //猜小了 //直到猜对了&#xff0c;结束 #include <stdlib.h> #include <time.h> void menu() {printf("********************************\n");printf("…

【Redis7】高阶篇

1 Redis单线程 VS 多线程(入门篇) 1.1 面试题 redis到底是单线程还是多线程&#xff1f; IO多路复用听说过吗&#xff1f; redis为什么快&#xff1f; 1.2 Redis为什么选择单线程&#xff1f; 1.2.1 是什么 这种问法其实并不严谨&#xff0c;为啥这么说呢? Redis的版本…

怎么将图片插入excel单元格中

首先选中单元格选择插入 在图片位置选择插入图片的位置 然后就插入成功了&#xff0c;一开始会觉得图片是附在表格上面的&#xff0c;并不在单元格里面&#xff0c;但是右边有一个小图片的图标&#xff0c;点击它可以缩小到单元格里面&#xff0c;再点击就是放大&#xff1b;

【无人值守】对数据中心电力分配系统发展的影响

数据中心在现代信息发展中承载着巨量数据的计算、存储、挖掘、分析和应用等多个方面的功能&#xff0c;是国计民生各行业的多样化的信息化的资产。对稳定的运行与安全运维是基本需求也是重要的保障。 数据中心属于高能耗产业&#xff0c;对用电负荷大且要求极度稳定。除了对电力…

ROS、pix4、gazebo、qgc仿真ubuntu20.04

一、ubuntu、ros安装教程比较多&#xff0c;此文章不做详细讲解。该文章基于ubuntu20.04系统。 pix4参考地址&#xff1a;https://docs.px4.io/main/zh/index.html 二、安装pix4 1. git clone https://github.com/PX4/PX4-Autopilot.git --recursive 2. bash ./PX4-Autopilot…

华为od 100问 持续分享4-目标院校及分数线

我是一名软件开发培训机构老师&#xff0c;我的学生已经有上百人通过了华为OD机试&#xff0c;学生们每次考完试&#xff0c;会把题目拿出来一起交流分享。 重要&#xff1a;2024年5月份开始&#xff0c;考的都是OD统一考试&#xff08;D卷&#xff09;&#xff0c;题库已经整…

TikTok账号矩阵运营怎么做?

这几年&#xff0c;聊到出海避不过海外抖音&#xff0c;也就是TikTok&#xff0c;聊到TikTok电商直播就离不开账号矩阵&#xff1b; 在TikTok上&#xff0c;矩阵养号已经成为了出海电商人的流行策略&#xff0c;归根结底还是因为矩阵养号可以用最小的力&#xff0c;获得更大的…

RTI DDS大数据碎片

有两种类型的碎片&#xff1a;IP级碎片和DDS级碎片。 当传输层&#xff08;通常是UDP或TCP&#xff09;提供的有效载荷超过适合链路帧的最大有效载荷大小&#xff08;也称为链路最大传输单元或链路MTU&#xff09;时&#xff0c;就会发生IP级碎片。如果网络是以太网&#xff0…

【大模型】FAISS向量数据库记录:从基础搭建到实战操作

文章目录 文章简介Embedding模型BGE-M3 模型亮点 FAISS是什么FAISS实战安装faiss加载Embedding模型创建FAISS数据库搜索FAISS数据删除FAISS数据保存、加载FAISS索引 总结 本人数据分析领域的从业者&#xff0c;拥有专业背景和能力&#xff0c;可以为您的数据采集、数据挖掘和数…

通用图形处理器设计GPGPU基础与架构(二)

一、前言 本系列旨在介绍通用图形处理器设计GPGPU的基础与架构&#xff0c;因此在介绍GPGPU具体架构之前&#xff0c;需要了解GPGPU的编程模型&#xff0c;了解软件层面是怎么做到并行的&#xff0c;硬件层面又要怎么配合软件&#xff0c;乃至定出合适的架构来实现软硬件协同。…

15- 微分方程

对三角函数不敏感

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git、gdb)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…

提高记忆力7种自然(高效)的方法

你的记忆力如何?你的认知功能是否如你所希望的那样强大? 如果没有,那么你肯定会对将在本文中与你分享的记忆改善技巧感兴趣的。 不管你怎么想,或者别人怎么说,提高你记忆信息的能力是完全有可能的。只要知道正确的方法即可。(别担心,你并不需要做出任何重大的生活方式改…