【随笔】Git 高级篇 -- 本地栈式提交 rebase | cherry-pick(十七)

news/2025/2/19 0:09:11

请添加图片描述

  • 💌 所属专栏:【Git】

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

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

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

请添加图片描述

文章目录

  • 前言
  • 一、本地栈式提交
      • 1、介绍
      • 2、示范
        • (1)git rebase -i
        • (2)git cherry-pick
      • 3、实战
        • (1)第一种方法:rebase
        • (2)第二种方法:cherry-pick
  • 总结


前言

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


一、本地栈式提交

  这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的讲解了整理提交记录的用法,在实际开发过程中有时候提交会把一些调试语句也会上传上去,这让我们很困扰,接下来就让我们看看怎么解决。话不多说,让我们原文再续,书接上回吧。

在这里插入图片描述

1、介绍

  在开发实际过程中中经常会遇到的情况:我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。
  这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!
  最后就差把 bugFix 分支里的工作合并回 main 分支了。你可以选择通过 fast-forward 快速合并到 main 分支上,但这样的话 main 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式。
  实际我们只要让 Git 复制解决问题的那一个提交记录就可以了。跟之前我们在“整理提交记录”中学到的一样,我们可以使用以下两个命令来达到目的。

  由于我们刚刚闯过类似的关卡,所以要不要再尝试一次就看你自己了。但是如果你想试一把的话,确保 main 分支能得到 bugFix 分支上的相关提交。

2、示范

git_rebase_i_61">(1)git rebase -i

  交互式 rebase 指的是使用带参数 --interactiverebase 命令, 简写为 -i
  如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。

git rebase -i HEAD~4
git_cherrypick_70">(2)git cherry-pick

  该指令是用于选择一个或多个提交(commit)并将其应用到当前分支的指令。

git cherry-pick <commit>...

  其中,<commit> 表示要选择的提交的哈希值或引用。

3、实战

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

  • help 指令

  执行这个命令后就会有个帮助信息的弹窗。
在这里插入图片描述

  • levels 指令

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

在这里插入图片描述

  • 目标

在这里插入图片描述

  • 开始结构

在这里插入图片描述

(1)第一种方法:rebase
  • Step 1、交互式的 rebase

  从目标可以知道,由于 main 分支只要 bugFix 提交,其他提交不想合并进去,就可以使用 rebase 将需要提交合并到 main 分支中;rebase 使用可以以下三种方式进行实现:

    • 分支名
git rebase -i main
    • HEAD指针偏移
git rebase -i HEAD~3
    • 哈希值
git rebase -i C1

  通过交互界面,把 bugFix 分支里 C2,C3 进行删除;运行结果如下图所示:

请添加图片描述

  • Step 2、合并 main

  通过 rebase 命令将 bugFix 分支合并到 main 中,从而达到更新 main 分支的作用;

git rebase bugFix main

  运行结果如下图所示:

在这里插入图片描述

(2)第二种方法:cherry-pick
  • Step 1、选择分支
git checkout main
  • Step 2、cherry-pick
git cherry-pick C4

  这里发现 bugFix 分支不变,main 分支满足需求也是一样能通关的,但这里有个问题怎么样才能将 bugFix 合并在一起呢?本人用 git rebase bugFix main 进行合并,但也会把 C2,C3也会一起合并进去,这样就达不到我们想要的结果,这个问题就留给各位大佬解决啦。😀

在这里插入图片描述

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

在这里插入图片描述


总结

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

在这里插入图片描述

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

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

更多专栏订阅:

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



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

文章来源:https://blog.csdn.net/csh1807266489/article/details/137458702
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/5480527.html

相关文章

Spring之IoC容器(持续更新版本...)

目录 IoC容器1. Bean概述1.1. Bean命名1.2. 实例化Bean 2. 依赖关系2.1. 依赖注入2.2. 自动装配 3. Bean的范围4. 定制Bean的特性4.1. 生命周期回调4.2. Lifecycle、SmartLifecycle 以及 LifecycleProcessor4.3. Aware接口 5. 容器拓展6. 容器启动过程7. 基于注解的容器配置7.1…

使用Ollama在本地运行AI大模型gemma

1.下载&#xff1a; https://github.com/ollama/ollama/releases 2.配置环境变量 我的电脑-右键-属性-系统-高级系统设置-环境变量-【系统环境变量】新建 变量名&#xff1a;OLLAMA_MODELS &#xff08;固定变量名&#xff09; 变量值&#xff1a;E:\Ollama\Lib &#xff0…

2、java语法之循环、数组与方法(找工作版)

写在前面&#xff1a;整个系列文章是自己学习慕课相关视频&#xff0c;进行的一个总结。文章只是为了记录学习课程的整个过程&#xff0c;方便以后查漏补缺&#xff0c;找到对应章节。 文章目录 一、Java循环结构1、while循环2、do-while循环3、for循环4、嵌套循环5、break语句…

【LAMMPS学习】八、基础知识(1.6) LAMMPS 与其他代码耦合

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

c#编程基础学习之方法

目录 C#方法方法参数默认参数值多个参数返回值命名参数 方法重载 C#方法 实例 在程序类内创建一个方法&#xff1a; class Program {static void MyMethod() //static 静态意味着方法属于程序类&#xff0c;而不是程序类的对象。void 表示此方法没有返回值。MyMethod() 是方法…

【Leetcode】289.生命游戏

一、题目 1、题目描述 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (d…

nandgame中的Grammar(语法)

题目说明&#xff1a; 语法定义涉及数字、括号和运算符和-的表达式的语法。起始符号为Expression。一个表达式应该对应于以下之一&#xff1a;一个数字标记Expression ExpressionExpression - Expression- Expression( Expression ) level help 通过语法来描述高级语言的…

Kotlin:for循环的几种示例

一、 打印 0 到 2 1.1 方式一&#xff1a;0 until 3 /*** 打印 0 到 2*/ fun print0To2M1(){for (inex in 0 until 3){// 不包含3print("$inex ")} }运行结果 1.2 方式二&#xff1a;inex in 0 …2 /*** 打印 0 到 2*/ fun print0To2M2(){for (inex in 0 ..2){//…