【随笔】Git 高级篇 -- 整理提交记录(下)rebase -i(十六)

  • 💌 所属专栏:【Git】

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

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

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

文章目录


前言

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

这是今天学习到Git 高级篇 -- 整理提交记录 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。

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

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


一、Git 整理提交记录

这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的讲解了Git 撤销变更的用法,在实际开发过程中也要学会整理提交记录,接下来就跟着学习Git 的整理提交记录(下)吧。话不多说,让我们原文再续,书接上回吧。

1、介绍

当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 ------ 没有比这更简单的方式了。

但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase ------ 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了

2、示范

(1)git rebase -i

交互式 rebase 指的是使用带参数 --interactiverebase 命令, 简写为 -i

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

在实际使用时,所谓的 UI 窗口一般会在文本编辑器 ------ 如 Vim ------ 中打开一个文件。 考虑到课程的初衷,练习网址特意弄了一个对话框来模拟这些操作(不愧是大佬)。

当 rebase UI界面打开时, 你能做3件事:

  • 调整提交记录的顺序(通过鼠标拖放来完成);
  • 删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录);
  • 合并提交。 遗憾的是由于某种逻辑的原因,该练习网址不支持此功能,因此不会详细介绍这个操作。简而言之,它允许你把多个提交记录合并成一个;

接下来咱们看个实例

python 复制代码
git rebase -i HEAD~4

这里通过UI调整了提交记录顺序,结果如下图所示:

要通过本关, 做一次交互式的 rebase,整理成目标窗口中的提交顺序。 记住,你随时都可以用 undoreset 修正错误,这是不会记入步数的(通关提示)。

3、实战

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

  • help 指令

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

  • levels 指令

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

  • 目标
  • 开始结构
  • Step 1、交互式的 rebase

从目标可以知道,由于 main 分支只要 C3 C4 C7 提交,其他提交不想合并进去,就可以使用 cherry-pick 将需要提交合并到 main 分支中;

python 复制代码
git rebase -i overHere
python 复制代码
git rebase -i HEAD~4

这里我们可以先进行误操作,比如把 C2 C3 C4 进行删除,从而得到新的分支;运行结果如下图所示:

这里可以看到选中的分支已经被删除了。

然后我们就可以用 undo 或者 reset 命令来进行恢复。这里以 reset 为例,undo 的话可以让各位看客尝试一下。

python 复制代码
git reset C5

运行结果如下图所示:

Git中的 undoreset 都是用来撤销之前的更改的,但它们实现的方式不同。undo 是一个命令,它可以用来撤销最近的提交或操作。它主要移动 HEAD 指针和分支指针,从而回退到之前的提交状态。使用 undo 会丢失之前的提交历史,所以在使用该命令之前需要谨慎考虑。

git reset也是一个命令,它可以用来撤销之前的提交。与 undo 不同的是,git reset 通过把分支记录回退几个提交记录来实现撤销改动,原来指向的提交记录就跟从来没有提交过一样。所做的变更还在,但是处于未加入暂存区状态。

最后,按着目标进行操作即可通过啦

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


总结

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

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

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

更多专栏订阅:

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

相关推荐
青椒大仙KI1139 分钟前
24/9/19 算法笔记 kaggle BankChurn数据分类
笔记·算法·分类
liangbm31 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
Charles Ray2 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
重生之我在20年代敲代码2 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
m0_464832363 小时前
Linux服务器上安装git lfs命令
git
我要吐泡泡了哦3 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1233 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai5 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫6 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习