💌 所属专栏:【Git】
😀 作 者:我是夜阑的狗🐶
🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
文章目录
- 前言
- 一、纠缠不清的分支
- 1、介绍
- 2、示范
- 3、实战
- (1)第一种方法
- (1)第二种方法
- 总结
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第二十四篇文章;
这是今天学习到Git 高级篇 – 纠缠不清的分支 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
一、纠缠不清的分支
这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的学习了快速定位分支,接下来就让我们看看在实际项目过程中是怎么管理纠缠不清的分支的吧。话不多说,让我们原文再续,书接上回吧。
1、介绍
到了这里,你基本上成为了别人眼中的大神了!这关我们要来点不同的!现在我们的 main 分支是比 one
、two
和 three
要多几个提交。出于某种原因,我们需要把 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随手笔记】
- 🤩 【大数据学习笔记(华为云)】
- 🦄 【程序错误解决方法(建议收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!