

文章目录
- 前言
- 一、本地栈式提交
- 总结
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第十七篇文章;
这是今天学习到Git 高级篇 -- 本地栈式提交 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
一、本地栈式提交
这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的讲解了整理提交记录的用法,在实际开发过程中有时候提交会把一些调试语句也会上传上去,这让我们很困扰,接下来就让我们看看怎么解决。话不多说,让我们原文再续,书接上回吧。

1、介绍
在开发实际过程中中经常会遇到的情况:我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。
这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!
最后就差把 bugFix
分支里的工作合并回 main
分支了。你可以选择通过 fast-forward
快速合并到 main
分支上,但这样的话 main
分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式。
实际我们只要让 Git 复制解决问题的那一个提交记录就可以了。跟之前我们在"整理提交记录"中学到的一样,我们可以使用以下两个命令来达到目的。
- git rebase -i
- git cherry-pick
由于我们刚刚闯过类似的关卡,所以要不要再尝试一次就看你自己了。但是如果你想试一把的话,确保 main 分支能得到 bugFix 分支上的相关提交。
2、示范
(1)git rebase -i
交互式 rebase
指的是使用带参数 --interactive
的 rebase
命令, 简写为 -i
。
如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
python
git rebase -i HEAD~4
(2)git cherry-pick
该指令是用于选择一个或多个提交(commit)并将其应用到当前分支的指令。
python
git cherry-pick <commit>...
其中,<commit>
表示要选择的提交的哈希值或引用。
3、实战
从前面了解到具体的实现的步骤,就可以开始实战啦。这里先给大家说一下这个练习网站的一些使用技巧,
- help 指令
执行这个命令后就会有个帮助信息的弹窗。
- levels 指令
执行完这个命令之后就能看到关卡目录了。

- 目标

- 开始结构

(1)第一种方法:rebase
- Step 1、交互式的 rebase
从目标可以知道,由于 main
分支只要 bugFix 提交,其他提交不想合并进去,就可以使用 rebase
将需要提交合并到 main
分支中;rebase
使用可以以下三种方式进行实现:
-
- 分支名
python
git rebase -i main
-
- HEAD指针偏移
python
git rebase -i HEAD~3
-
- 哈希值
python
git rebase -i C1
通过交互界面,把 bugFix
分支里 C2,C3 进行删除;运行结果如下图所示:

- Step 2、合并 main
通过 rebase
命令将 bugFix
分支合并到 main
中,从而达到更新 main
分支的作用;
python
git rebase bugFix main
运行结果如下图所示:

(2)第二种方法:cherry-pick
- Step 1、选择分支
python
git checkout main
- Step 2、cherry-pick
python
git cherry-pick C4
这里发现 bugFix
分支不变,main
分支满足需求也是一样能通关的,但这里有个问题怎么样才能将 bugFix
合并在一起呢?本人用 git rebase bugFix main
进行合并,但也会把 C2,C3也会一起合并进去,这样就达不到我们想要的结果,这个问题就留给各位大佬解决啦。😀

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

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

** 也欢迎你,关注我。👍 👍 👍**
** 原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉**
更多专栏订阅:
- 😀 【LeetCode题解(持续更新中)】
- 🌼 【鸿蒙系统】
- 👑 【Python脚本笔记】
- 🚝 【Java Web项目构建过程】
- 💛 【微信小程序开发教程】
- ⚽ 【JavaScript随手笔记】
- 🤩 【大数据学习笔记(华为云)】
- 🦄 【程序错误解决方法(建议收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!