【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 通…

git往远程仓库新加分支,并在本地获取新分支,解决了不会上传分支以及他人上传分支之后自己无法查看问题

1.新建分支 git branch hzw2.切换分支 git checkout hzw也可以一步到位 git checkout -b hzw3.推送改分支到远端 git push -u origin hzw此时这个分支已经被推动到了远端,现在我们可以新开一个本地分支,连接这个仓库(默认已经连接好了) 此时输入命令…

文件上传1

上传文件到linux服务器 RestController public class UploadController {Value("${file.path}")private String filePath;PostMapping("/uploadFile")public Map<String, Object> uploadFile(RequestParam("file") MultipartFile file){M…

【学习笔记】min_25筛

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

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

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

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 概念 运用哈希的思想&#xff0c;将整型…

快速上手 Yarn:详解安装、配置、基本用法及其在 JavaScript 包管理中的作用

Yarn 是一个快速、可靠、安全的 JavaScript 包管理工具&#xff0c;专为解决 npm 的一些性能问题而设计。本文将详细介绍如何安装、配置和基本使用 Yarn。 安装 Yarn 使用 npm 安装 如果您已经安装了 npm&#xff0c;可以使用以下命令全局安装 Yarn&#xff1a; npm instal…

创建一个矩形,当鼠标进入这个矩形的时候,这个矩形边线变色,且鼠标变成手型

1.概要 创建一个矩形&#xff0c;当鼠标进入这个矩形的时候&#xff0c;这个矩形边线变色&#xff0c;且鼠标变成手型 2.代码 #include <QApplication> #include "customRectWidget.h" /** qt 6.7版&#xff0c; 创建一个矩形&#xff0c;当鼠标进入这个矩形…

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

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

【设计模式之美】【建造型】建造者模式:处理复杂成员变量以及它们之间的关系

文章目录 一. 使用场景二. 具体实现三. 小结1. 结合场景使用2. 与工厂模式的区别 建造者模式本身不难&#xff0c;重点是掌握好它的适用场景。 一. 使用场景 如果一个类中有很多属性&#xff0c;为了避免构造函数的参数列表过长&#xff0c;影响代码的可读性和易用性&#xf…

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

文章目录 安装miniconda安装python环境启动 最近服务器检查&#xff0c;我下面的服务器有漏洞&#xff0c;不得已重装了&#xff0c;正好记录下怎么从零到python写代码。 安装miniconda miniconda是anconda的精简版&#xff0c;就是管理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;获得更大的…

图片转换为张量

将一张图片转换为张量可以通过使用 Python 的图像处理库&#xff08;如 PIL 或 OpenCV&#xff09;结合 PyTorch 的工具函数来实现。下面我将分别展示如何使用 PIL 和 OpenCV 来加载和转换图片为 PyTorch 张量。 使用 PIL 加载和转换图片为张量 首先&#xff0c;使用 PIL 库加…