- 💌 所属专栏:【Git】
- 😀 作 者:我是夜阑的狗🐶
- 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
- 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩 🤩 🤩
文章目录
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【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
刚好相反,这是可以讲的通的,因为我们在往相反的方向传送数据。
理论上虽然行的通,但开发人员很少这么做。我在这里介绍它主要是为了从概念上说明
fetch
和
push
的相似性,只是方向相反罢了。来看个疯狂的例子:
git fetch origin foo~1:bar
哇!看见了吧,Git 将
foo~1
解析成一个
origin
仓库的位置,然后将那些提交记录下载到了本地的
bar
分支(一个本地分支)上。注意由于我们指定了目标分支,
foo
和
o/foo
都没有被更新。运行结果如下图所示:
如果执行命令前目标分支不存在会怎样呢?我们看一下上个对话框中没有 bar 分支的情况。
git fetch origin foo~1:bar
看见了吧,跟
git push
一样,Git 会在
fetch
前自己创建立本地分支, 就像是 Git 在
push
时,如果远程仓库中不存在目标分支,会自己在建立一样。运行结果如下图所示:
那没有参数呢?如果
git fetch
没有参数,它会下载所有的提交记录到各个远程分支……
git fetch
相当简单,但是仅需更新一次,值得你去做!运行结果如下图所示:
好,说得太多了!要完成本关,抓取目标窗口中指定的提交记录,使用这些魔幻的命令吧!**使用
fetch
时, 你必须指定
source
和
destination
。 注意一下目标窗口, 因为提交对象的 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随手笔记】
- 🤩 【大数据学习笔记(华为云)】
- 🦄 【程序错误解决方法(建议收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!
版权归原作者 我是夜阑的狗 所有, 如有侵权,请联系我们删除。