【随笔】Git 高级篇 -- 缓存远端数据命令的参数 git fetch(三十八)

2024-05-10 10:44

本文主要是介绍【随笔】Git 高级篇 -- 缓存远端数据命令的参数 git fetch(三十八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请添加图片描述

  • 💌 所属专栏:【Git】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩 🤩 🤩

请添加图片描述

文章目录

  • 前言
  • 一、git fetch 参数
      • 1、介绍
      • 2、示范
      • 3、实战
        • (1)第一种方法
        • (2)第二种方法
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第三十八篇文章;
  这是今天学习到Git 高级篇 – 缓存远端数据命令的参数 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
  专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、git fetch 参数

  这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的学习了怎么合并远程仓库,接下来就让我们看看在实际项目过程中是怎么远程跟踪分支的吧。话不多说,让我们原文再续,书接上回吧。

请添加图片描述

1、介绍

  我们刚学习了 git push 的参数,很酷的 <place> 参数,还有用冒号分隔的 refspecs<source>:<destination>)。 这些参数可以用于 git fetch 吗?
  你猜中了!git fetch 的参数和 git push 极其相似。他们的概念是相同的,只是方向相反罢了(因为现在你是下载,而非上传)。让我们逐个讨论下这些概念……
  <place> 参数,如果你像如下命令这样为 git fetch 设置 的话:

git fetch origin foo

  Git 会到远程仓库的 foo 分支上,然后获取所有本地不存在的提交,放到本地的 o/foo 上。

2、示范

  来看个例子(还是前面的例子,只是命令不同了),通过指定 place

git fetch origin foo

  我们只下载了远程仓库中 foo 分支中的最新提交记录,并更新了 o/foo。运行结果如下图所示:

请添加图片描述

  你可能会好奇 —— 为何 Git 会将新提交放到 o/foo 而不是放到我本地的 foo 分支呢?之前不是说这样的 参数就是同时应用于本地和远程的位置吗?
  好吧,本例中 Git 做了一些特殊处理,因为你可能在 foo 分支上的工作还未完成,你也不想弄乱它。还记得在 git fetch 课程里我们讲到的吗 —— 它不会更新你的本地的非远程分支,只是下载提交记录(这样,你就可以对远程分支进行检查或者合并了)。
  “如果我们指定 <source>:<destination> 会发生什么呢?”如果你觉得直接更新本地分支很爽,那你就用冒号分隔的 refspec 吧。不过,你不能在当前切换的分支上干这个事,但是其它分支是可以的。
  这里有一点是需要注意的 —— source 现在指的是远程仓库中的位置,而 <destination> 才是要放置提交的本地仓库的位置。它与 git push 刚好相反,这是可以讲的通的,因为我们在往相反的方向传送数据。
  理论上虽然行的通,但开发人员很少这么做。我在这里介绍它主要是为了从概念上说明 fetchpush 的相似性,只是方向相反罢了。来看个疯狂的例子:

git fetch origin foo~1:bar

  哇!看见了吧,Git 将 foo~1 解析成一个 origin 仓库的位置,然后将那些提交记录下载到了本地的 bar 分支(一个本地分支)上。注意由于我们指定了目标分支,fooo/foo 都没有被更新。运行结果如下图所示:

请添加图片描述

  如果执行命令前目标分支不存在会怎样呢?我们看一下上个对话框中没有 bar 分支的情况。

git fetch origin foo~1:bar

  看见了吧,跟 git push 一样,Git 会在 fetch 前自己创建立本地分支, 就像是 Git 在 push 时,如果远程仓库中不存在目标分支,会自己在建立一样。运行结果如下图所示:

请添加图片描述
  那没有参数呢?如果 git fetch 没有参数,它会下载所有的提交记录到各个远程分支……

git fetch

  相当简单,但是仅需更新一次,值得你去做!运行结果如下图所示:

请添加图片描述

  好,说得太多了!要完成本关,抓取目标窗口中指定的提交记录,使用这些魔幻的命令吧!使用 fetch 时, 你必须指定 sourcedestination。 注意一下目标窗口, 因为提交对象的 ID 可能会变哦!

3、实战

  从前面了解到具体的实现的步骤,就可以开始实战啦。这里先给大家说一下这个练习网站的一些使用技巧,

  • help 指令

  执行这个命令后就会有个帮助信息的弹窗。

在这里插入图片描述

  • levels 指令

  执行完这个命令之后就能看到关卡目录了。

在这里插入图片描述

  • 目标

在这里插入图片描述

  注意,这里的目标要实现得一摸一样,才能通过。

  • 开始结构

在这里插入图片描述

(1)第一种方法

  我们可以用 fetch 命令将远程数据缓存到本地分支中,最后再来进行合并,接下来就让我们来看看是怎么操作的吧。

  • Step 1、拉取 main 分支

  将远程 main 分支的上一提交点前的修改点拉取到本地的 foo 分支,注意:这里只是拉取到本地分支作为缓存而已,并不是直接合并到本地分支中。

git fetch origin main^:foo

  运行结果如下图所示:

请添加图片描述

  • Step 2、拉取 foo 分支

  将远程 foo 分支拉取到本地的 main 分支中,注意:这里只是拉取到本地分支作为缓存而已,并不是直接合并到本地分支中。

git push origin foo:main

  很简单吧,运行结果如下图所示:

请添加图片描述

  • Step 3、指向 foo 分支

  将 Git 的 HEAD 指针指向 foo 分支,使其脱离 HEAD 分离状态。

git checkout foo

  很简单吧,运行结果如下图所示:

在这里插入图片描述

  • Step 4、合并 foo 分支

  将本地 main 分支合并到 foo 分支中。

git merge main

  很简单吧,运行结果如下图所示:

请添加图片描述

(2)第二种方法

  除了第一种方法之外,当然也可以 pull 命令来完成,git pull 的参数后续文章就会讲到,这里就先提前用来实践啦。接下来就让我们来看看是怎么操作的吧。

  • Step 1、拉取 main 分支

  将远程 foo 分支拉取到本地的 main 分支中作为本地缓存,并以 rebase 的形式合并到本地分支中。

git pull --rebase origin foo:main

  运行结果如下图所示:

请添加图片描述

  • Step 2、拉取 foo 分支

  将远程 main 分支的上一提交点前的修改点拉取到本地的 foo 分支作为本地缓存,并 merge 形式合并到本地分支中。

git pull origin main^:foo

  运行结果如下图所示:

请添加图片描述

  • Step 3、指向 foo

  将 Git 的 HEAD 指针指向 foo 分支,使其脱离 HEAD 分离状态。

git checkout foo

  运行结果如下图所示:

在这里插入图片描述

  • Step 4、更新 foo 分支

  将 foo 分支更新至本地最新状态。

git merge C7

  运行结果如下图所示:

在这里插入图片描述

  达成目标之后就会有成功的提示。

在这里插入图片描述


总结

  感谢观看,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 🌼 【鸿蒙系统】
  • 👑 【Python脚本笔记】
  • 🚝 【Java Web项目构建过程】
  • 💛 【微信小程序开发教程】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!

这篇关于【随笔】Git 高级篇 -- 缓存远端数据命令的参数 git fetch(三十八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT