【随笔】Git 高级篇 -- 合并远程仓库 git merge(三十四)

  • 💌 所属专栏:【Git】

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

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

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

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

文章目录


前言

大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第三十四篇文章;

这是今天学习到Git 高级篇 -- 合并远程仓库 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。

专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。

如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、合并远程仓库

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

1、介绍

为什么不用 merge 呢?为了 push 新变更到远程仓库,你要做的就是包含远程仓库中最新变更。意思就是只要你的本地分支包含了远程分支(如 o/main)中的最新变更就可以了,至于具体是用 rebase 还是 merge,并没有限制。

那么既然没有规定限制,为何前面几节都在着重于 rebase 呢?为什么在操作远程分支时不喜欢用 merge 呢?在开发社区里,有许多关于 mergerebase 的讨论。以下是关于 rebase 的优缺点:

  • 优点

    • Rebase 使你的提交树变得很干净, 所有的提交都在一条线上;
  • 缺点

    • Rebase 修改了提交树的历史;

比如,提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的,但实际上是在 C3 之前。

一些开发人员喜欢保留提交历史,因此更偏爱 merge。而其他人(比如我自己)可能更喜欢干净的提交树,于是偏爱 rebase。仁者见仁,智者见智。 😄

2、示范

(1)merge 更新本地分支合并提交

还有其它的方法可以在远程仓库变更了以后更新我的工作吗? 当然有,我们还可以使用 merge。尽管 git merge 不会移动你的工作(它会创建新的合并提交),但是它会告诉 Git 你已经合并了远程仓库的所有变更。这是因为远程分支现在是你本地分支的祖先,也就是说你的提交已经包含了远程分支的所有变化。

看下演示,咱们们用 merge 替换 rebase 来试一下......

python 复制代码
git fetch
git merge o/main
git push

我们用 git fetch 更新了本地仓库中的远程分支,然后合并了新变更到我们的本地分支(为了包含远程仓库的变更),最后我们用 git push 把工作推送到远程仓库。**这里需要注意的是在实际项目过程中,如果本地分支和远程分支存在冲突,是停留在 git merge 阶段的,需要手动解冲突才能进行后续的步骤。**运行结果如下图所示:

(2)pull --rebase更新本地分支提交

很好!但是要敲那么多命令,有没有更简单一点的?当然 ------ 前面已经介绍过 git pull 就是 fetchmerge 的简写,类似的 git pull --rebase 就是 fetchrebase 的简写!

让我们看看简写命令是如何工作的。这次用 --rebase 参数......

python 复制代码
git pull --rebase
git push

跟之前结果一样,但是命令更短了。运行结果如下图所示:

本关,我们还是解决上一关卡中的问题,但是要用 merge 替换 rebase。这显然有点画蛇添足,但这只是为了更好的说明上面的观点。

3、实战

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

  • help 指令

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

  • levels 指令

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

  • 目标

注意,这里的目标不是说要实现得一摸一样,才能通过,只是参考合并而已!(因为本人以为要一模一样才可以,结果发现不是)

  • 开始结构
(1)第一种方法

我们将本地分支更新至最新状态,并 side1 分支为主来进行合并后续的分支,接下来就让我们来看看是怎么操作的吧。

  • Step 1、拉取远程数据

将远程分支的数据拉取到本地分支,但这里注意的是该数据没有合并到本地分支,只是提前下载好而已。

python 复制代码
git fetch

运行结果如下图所示:

  • Step 2、选择 side1 分支

指向 side1 分支为合并分支,作为后续合入分支的基点。

python 复制代码
git checkout side1

运行结果如下图所示:

  • Step 3、合并 o/main 分支

o/main 分支合入到 side1 分支中。

python 复制代码
git merge o/main

运行结果如下图所示:

  • Step 4、合并 side2 分支

side2 分支合入到 side1 分支中。

python 复制代码
git merge side2

运行结果如下图所示:

  • Step 5、合并 side3 分支

side2 分支合入到 side1 分支中。

python 复制代码
git merge side3

运行结果如下图所示:

  • Step 6、更新 main 分支

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

python 复制代码
git rebase side1 main

运行结果如下图所示:

  • Step 7、推送 main 分支

本地分支更新至最新之后,就可以将本地的修改点上传至远程分支了。

python 复制代码
git push origin main

运行结果如下图所示:

(2)第二种方法

除了第一种方法之外,当然也可以主分支为合入基点来进行后续合并,接下来就让我们来看看是怎么操作的吧。

  • Step 1、选择 main 分支

指向主分支为后续的同步远程仓库数据和合并分支做准备。

python 复制代码
git checkout main

运行结果如下图所示:

  • Step 2、拉取远程分支

拉取远程分支数据并以 rebase 的方式合并到本地分支中,实际项目过程中可能还需要解一下冲突。

python 复制代码
git pull --rebase

运行结果如下图所示:

  • Step 3、合并 side1 分支

side1 分支合入到主分支中。

python 复制代码
git merge side1

运行结果如下图所示:

  • Step 4、合并 side2 分支

side2 分支合入到主分支中。

python 复制代码
git merge side2

运行结果如下图所示:

  • Step 5、合并 side3 分支

side3 分支合入到主分支中。

python 复制代码
git merge side3

运行结果如下图所示:

  • Step 6、推送main 分支

本地分支更新至最新之后,就可以将本地的修改点上传至远程分支了。

python 复制代码
git push origin main

运行结果如下图所示:

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


总结

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

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

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

更多专栏订阅:

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

相关推荐
汇能感知4 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun4 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao5 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾5 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT5 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J6 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
Suckerbin6 小时前
LAMPSecurity: CTF5靶场渗透
笔记·安全·web安全·网络安全
小憩-7 小时前
【机器学习】吴恩达机器学习笔记
人工智能·笔记·机器学习
ficker137 小时前
git常用命令
git
UQI-LIUWJ7 小时前
unsloth笔记:运行&微调 gemma
人工智能·笔记·深度学习