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

server/2024/12/22 21:07:19/

请添加图片描述

  • 💌 所属专栏:【Git】

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

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

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

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

请添加图片描述

文章目录

  • 前言
  • 一、合并远程仓库
      • 1、介绍
      • 2、示范
        • (1)merge 更新本地分支合并提交
        • (2)pull --rebase更新本地分支提交
      • 3、实战
        • (1)第一种方法
        • (2)第二种方法
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【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 来试一下……

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 参数……

git pull --rebase
git push

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

请添加图片描述

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

3、实战

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

  • help 指令

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

在这里插入图片描述

  • levels 指令

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

在这里插入图片描述

  • 目标

在这里插入图片描述

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

  • 开始结构

在这里插入图片描述

(1)第一种方法

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

  • Step 1、拉取远程数据

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

git fetch

  运行结果如下图所示:

请添加图片描述

  • Step 2、选择 side1 分支

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

git checkout side1

  运行结果如下图所示:

在这里插入图片描述

  • Step 3、合并 o/main 分支

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

git merge o/main

  运行结果如下图所示:

请添加图片描述

  • Step 4、合并 side2 分支

  将 side2 分支合入到 side1 分支中。

git merge side2

  运行结果如下图所示:

在这里插入图片描述

  • Step 5、合并 side3 分支

  将 side2 分支合入到 side1 分支中。

git merge side3

  运行结果如下图所示:

在这里插入图片描述

  • Step 6、更新 main 分支

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

git rebase side1 main

  运行结果如下图所示:

在这里插入图片描述

  • Step 7、推送 main 分支

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

git push origin main

  运行结果如下图所示:

请添加图片描述

(2)第二种方法

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

  • Step 1、选择 main 分支

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

git checkout main

  运行结果如下图所示:

在这里插入图片描述

  • Step 2、拉取远程分支

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

git pull --rebase

  运行结果如下图所示:

在这里插入图片描述

  • Step 3、合并 side1 分支

  将 side1 分支合入到主分支中。

git merge side1

  运行结果如下图所示:

在这里插入图片描述

  • Step 4、合并 side2 分支

  将 side2 分支合入到主分支中。

git merge side2

  运行结果如下图所示:

在这里插入图片描述

  • Step 5、合并 side3 分支

  将 side3 分支合入到主分支中。

git merge side3

  运行结果如下图所示:

在这里插入图片描述

  • Step 6、推送main 分支

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

git push origin main

  运行结果如下图所示:

请添加图片描述

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

在这里插入图片描述


总结

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

在这里插入图片描述

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

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

更多专栏订阅:

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



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


http://www.ppmy.cn/server/39381.html

相关文章

100000订单直接拒掉,君子爱财,取之有道

近一个月询盘可谓寥寥无几,成交率为0,今天好不容易接了一个客户询盘,订单总价高达100000,听完细节直接拒掉,至于原因懂的都懂,不懂得等我慢慢道来。 前两天有2个询盘,其中一个是二次开发&#x…

centos安装libsndfile-devel

centos安装libsndfile-devel 在CentOS系统中安装libsndfile-devel包,你可以使用yum包管理器。打开终端并执行以下命令: sudo yum install libsndfile-devel 这条命令会从CentOS的官方仓库中检索、下载并安装libsndfile-devel包及其依赖项。 如果你使用…

【QT教程】QT6硬件通信详解 QT硬件通信

QT6硬件通信详解 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…

【Ajax零基础教程】-----第四课 简单实现

一、XMLHttpRequest对象 通过XMLHttpRequest对象来向服务器发送异步请求,从服务器获取数据。然后用JavaScript来操作DOM而更新页面。XMLHttpRequest是ajax的核心机制,它是IE5中首先引入的,是一种支持异步请求的技术。 简单的说,也…

【全开源】Java U U跑腿同城跑腿小程序源码快递代取帮买帮送源码小程序+H 5+公众号跑腿系统

特色功能: 智能定位与路线规划:UU跑腿小程序能够利用定位技术,为用户提供附近的跑腿服务,并自动规划最佳路线,提高配送效率。订单管理:包括订单查询、订单状态更新、订单评价等功能,全行业覆盖…

Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 前言 通过前三篇Sprin…

初识Node.js-认识node(安装Node.js环境配置)

目录 一、node介绍 1.概念和特点 2.核心功能 3.应用场景 二、Node初使用 1.安装node配置 windows上安Node.js 1.windows安装包(.msi) 2、Windows 二进制文件 (.exe)安装 Linux 上安装 Node.js 直接使用已编译好的包 Ubuntu 源码安装 Node.js …

ORACLE ODA一体机存储节点电源故障的分析处理

近期,某用户的ORACLE ODA一体机在例行机房巡检时出现亮黄灯告警;用户反馈次问题后我们立刻通过远程方式,登陆ODA的控制台进行查看; 对于ODA一体机(2个计算节点1个存储节点),计算节点可以通过il…