【随笔】Git 高级篇 -- 纠缠不清的分支 rebase | cherry-pick(二十四)

2024-04-11 12:36

本文主要是介绍【随笔】Git 高级篇 -- 纠缠不清的分支 rebase | cherry-pick(二十四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请添加图片描述

  • 💌 所属专栏:【Git】

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

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

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

请添加图片描述

文章目录

  • 前言
  • 一、纠缠不清的分支
      • 1、介绍
      • 2、示范
      • 3、实战
        • (1)第一种方法
        • (1)第二种方法
  • 总结


前言

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


一、纠缠不清的分支

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

请添加图片描述

1、介绍

  到了这里,你基本上成为了别人眼中的大神了!这关我们要来点不同的!现在我们的 main 分支是比 onetwothree 要多几个提交。出于某种原因,我们需要把 main 分支上最近的几次提交做不同的调整后,分别添加到各个的分支上。
  one 需要重新排序并删除 C5,two 仅需要重排排序,而 three 只需要提交一次。慢慢来,你会找到答案的 —— 记得通关之后用 show solution 看看我们的答案哦。

2、示范

  git rebase 指令用于将一个分支的提交逐个应用到另一个分支上,以使得提交历史更加整洁。以下是该指令的基本用法:

  • 单参数
git rebase <branch>

  其中 <branch> 参数是要将当前分支的提交应用到的目标分支。执行该指令后,Git会将当前分支的各个提交逐个应用到目标分支上,创建新的提交。这样,目标分支就会包含当前分支的最新更改,而且提交历史线会更加整洁地呈现出一条直线。

  • 双参数
git rebase <branch1> <branch2>

  其中 <branch1> 参数是要将当前分支的提交应用到的目标分支,<branch2> 参数是需要提交到目标分支的源分支。
  需要注意的是,git rebase 不会保留原始分支上的提交。相反,它会将提交逐个应用到目标分支上,并创建新的提交。如果在 git rebase 的过程中发生冲突,需要手动解决冲突并使用 git add 命令将解决后的更改添加到暂存区。然后,使用 git rebase --continue 指令继续进行 git rebase 的操作。
  即使你搞砸了也没关系,用 reset 命令就可以重新开始了。记得看看作者提供的答案,看你能否使用更少的命令来完成任务!

3、实战

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

  • help 指令

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

在这里插入图片描述

  • levels 指令

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

在这里插入图片描述

  • 目标

在这里插入图片描述

  • 开始结构

在这里插入图片描述

(1)第一种方法

  最能直接想到就是用 rebase -i 选择分支合入来,就让我们来看看是怎么操作的吧。

  • Step 1、更新 one 分支

  通过链式操作指向 C2 提交记录,进入分离 HEAD 状态;

git rebase main one

  运行结果如下图所示:

在这里插入图片描述

  • Step 2、调整 one 分支

  通过指定的 HAED 创建对应的分支;

git rebase -i two

  运行结果如下图所示:

请添加图片描述

  • Step 3、更新 two

  最后在把 HEAD 指针重新指向 main 分支;

git rebase main two

  运行结果如下图所示:

在这里插入图片描述

  • Step 4、调整 two

  最后在把 HEAD 指针重新指向 main 分支;

git rebase -i three

  运行结果如下图所示:

请添加图片描述

  • Step 5、更新 three

  将 three 分支上从 C3 提交开始的提交应用到当前分支上。

git rebase three C2

  这个操作会将当前分支的提交切换为C3提交,然后逐个应用 three 分支上的提交,使其在当前分支上成为最新的提交。运行结果如下图所示:

在这里插入图片描述

(1)第二种方法

  除了用 rebase -i 选择分支合入之外,也可以用 cherry-pick 来进行操作,就让我们来看看是怎么操作的吧。

  • Step 1、选择 one 分支
git checkout one

  运行结果如下图所示:

在这里插入图片描述

  • Step 2、更新 one 分支

  选择需要合入分支的提交记录,并按输入顺序进行合入。

git cherry-pick C4 C3 C2

  运行结果如下图所示:

请添加图片描述

  • Step 3、选择 two 分支
git checkout two 

  运行结果如下图所示:

在这里插入图片描述

  • Step 4、更新 two 分支

  选择需要合入分支的提交记录,并按输入顺序进行合入。

git cherry-pick C5 C4 C3 C2

  运行结果如下图所示:

请添加图片描述

  • Step 5、更新 three 分支

  最后通过 branch 指令强行把 three 分支移动到 C2 提交记录上,同时丢弃原有的提交历史,这里需要注意一下,这可能会导致一些提交不可访问,所以在实际项目过程中该指令还是谨慎使用比较好;

git branch -f three C2

  运行结果如下图所示:

在这里插入图片描述

  实现方式有很多,这里就不一一列举了,达成目标之后就会有成功的提示。

在这里插入图片描述


总结

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

在这里插入图片描述

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

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

更多专栏订阅:

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



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

这篇关于【随笔】Git 高级篇 -- 纠缠不清的分支 rebase | cherry-pick(二十四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl