
💌 所属专栏:【Git】
😀 作 者:我是夜阑的狗🐶
🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩 🤩 🤩

文章目录
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第三十五篇文章;
这是今天学习到Git 高级篇 -- 远程跟踪分支 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
一、远程跟踪分支
这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的学习了怎么合并远程仓库,接下来就让我们看看在实际项目过程中是怎么远程跟踪分支的吧。话不多说,让我们原文再续,书接上回吧。

1、介绍
在前几节课程中有件事儿挺神奇的,Git 好像知道 main
与 o/main
是相关的。当然这些分支的名字是相似的,可能会让你觉得是依此将远程分支 main
和本地的 main
分支进行了关联。这种关联在以下两种情况下可以清楚地得到展示:
pull
操作时, 提交记录会被先下载到o/main
上,之后再合并到本地的main
分支。隐含的合并目标由这个关联确定的。push
操作时, 我们把工作从main
推到远程仓库中的main
分支(同时会更新远程分支o/main
) 。这个推送的目的地也是由这种关联确定的!
直接了当地讲,main
和 o/main
的关联关系就是由分支的" remote tracking
"属性决定的。main
被设定为跟踪 o/main
------ 这意味着为 main
分支指定了推送的目的地以及拉取后合并的目标。
你可能想知道 main
分支上这个属性是怎么被设定的,你并没有用任何命令指定过这个属性呀!好吧,当你克隆仓库的时候,Git 就自动帮你把这个属性设置好了。
当你克隆时, Git 会为远程仓库中的每个分支在本地仓库中创建一个远程分支(比如 o/main
)。然后再创建一个跟踪远程仓库中活动分支的本地分支,默认情况下这个本地分支会被命名为 main
。
克隆完成后,你会得到一个本地分支(如果没有这个本地分支的话,你的目录就是"空白"的),但是可以查看远程仓库中所有的分支(如果你好奇心很强的话)。这样做对于本地仓库和远程仓库来说,都是最佳选择。
这也解释了为什么会在克隆的时候会看到下面的输出:
local branch "main" set to track remote branch "o/main"
那我们能自己指定这个属性吗?当然可以啦!你可以让任意分支跟踪 o/main
,然后该分支会像 main
分支一样得到隐含的 push
目的地以及 merge
的目标。 这意味着你可以在分支 totallyNotMain
上执行 git push
,将工作推送到远程仓库的 main
分支上。
2、示范
有两种方法设置这个属性,第一种就是通过远程分支切换到一个新的分支,执行:
python
git checkout -b totallyNotMain o/main
就可以创建一个名为 totallyNotMain
的分支,它跟踪远程分支 o/main
。
第一种方法
闲话少说,咱们先看看演示!我们切换到一个名叫 foo
的新分支,让其跟踪远程仓库中的 main
分支。
python
git checkout -b foo o/main
git pull
运行结果如下图所示:

正如你所看到的, 我们使用了隐含的目标 o/main
来更新 foo
分支。需要注意的是 main
并未被更新!git push
同样适用
python
git checkout -b foo o/main
git commit
git push
运行结果如下图所示:

我们将一个并不叫 main
的分支上的工作推送到了远程仓库中的 main
分支上
第二种方法
另一种设置远程追踪分支的方法就是使用:git branch -u
命令,执行:
python
git branch -u o/main foo
这样 foo
就会跟踪 o/main
了。如果当前就在 foo
分支上,还可以省略 foo
:
python
git branch -u o/main
看看这种方式的实际的效果...
python
git branch -u o/main foo
git commit
git push
跟之前一样, 但这个命令更明确!运行结果如下图所示:

OK!本节我们在不切换到 main
分支的情况下将工作推送到的远程仓库中的 main
分支上。因为这是高级课程, 就不做过多的提示了! 😛
3、实战
从前面了解到具体的实现的步骤,就可以开始实战啦。这里先给大家说一下这个练习网站的一些使用技巧,
- help 指令
执行这个命令后就会有个帮助信息的弹窗。

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

- 目标

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

(1)第一种方法
接下来就让我们来看看是怎么操作的吧。
- Step 1、跟踪远程分支
首先需要创建新的分支来跟踪 o/main 分支。
python
git checkout -b side o/main
很简单吧,运行结果如下图所示:

- Step 2、提交
在本地分支进行一次提交。
python
git commit
运行结果如下图所示:

- Step 3、拉取合并分支
这里是最关键的一步,拉取远程分支数据并以 rebase
的方式合并到本地分支中,实际项目过程中可能还需要解一下冲突。
python
git pull --rebase
运行结果如下图所示:

- Step 4、推送修改
将主分支更新至最新状态之后,就可以将本地的修改点上传至远程分支了。
python
git push
运行结果如下图所示:

(2)第二种方法
除了第一种方法之外,当然也可以先创建新分支,然后用 branch
命令去跟踪远程分支,接下来就让我们来看看是怎么操作的吧。
- Step 1、创建新分支
创建新分支 side
为后续跟踪远程分支做准备。
python
git checkout -b side
运行结果如下图所示:

- Step 2、远程跟踪
选择本地分支 side
跟踪远程分支。
python
git branch -u o/main side
运行结果如下图所示:

- Step 3、提交
在本地分支进行一次提交。
python
git commit
运行结果如下图所示:

- Step 4、拉取合并分支
这里是最关键的一步,拉取远程分支数据并以 rebase
的方式合并到本地分支中,实际项目过程中可能还需要解一下冲突。
python
git pull --rebase
运行结果如下图所示:

- Step 5、推送分支
将主分支更新至最新状态之后,就可以将本地的修改点上传至远程分支了。
python
git push
运行结果如下图所示:

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

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

** 也欢迎你,关注我。👍 👍 👍**
** 原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉**
更多专栏订阅:
- 😀 【LeetCode题解(持续更新中)】
- 🌼 【鸿蒙系统】
- 👑 【Python脚本笔记】
- 🚝 【Java Web项目构建过程】
- 💛 【微信小程序开发教程】
- ⚽ 【JavaScript随手笔记】
- 🤩 【大数据学习笔记(华为云)】
- 🦄 【程序错误解决方法(建议收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!