💌 所属专栏:【Git】
😀 作 者:我是夜阑的狗🐶
🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
文章目录
- 前言
- 一、提交的技巧
- 1、介绍
- 2、示范
- 3、实战
- (1)第一种方法:rebase
- (2)第二种方法:cherry-pick
- 总结
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第十八篇文章;
这是今天学习到Git 高级篇 – 提交的技巧 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
一、提交的技巧
这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的讲解了整理提交记录的用法,在实际开发过程中有时候想把修改其中不是最新的 commit,这让我们很困扰,接下来就让我们看看下面是怎么解决的吧。话不多说,让我们原文再续,书接上回吧。
1、介绍
接下来这种情况也是很常见的:你之前在 newImage
分支上进行了一次提交,然后又基于它创建了 caption
分支,然后又提交了一次。
此时你想对某个以前的提交记录进行一些小小的调整。比如设计师想修改一下 newImage
中图片的分辨率,尽管那个提交记录并不是最新的了。
2、示范
我们可以通过以下步骤来进行解决:
- Step 1、先用
git rebase -i
将提交重新排序,然后把我们想要修改的提交记录挪到最前; - Step 2、然后用
git commit --amend
来进行一些小修改; - Step 3、接着再用
git rebase -i
来将他们调回原来的顺序; - Step 4、最后我们把
main
移到修改的最前端(用你自己喜欢的方法),就大功告成啦!
当然完成这个任务的方法不止上面提到的一种(也可以通过 cherry-pick
来进行解决),之后我们会多点关注这些技巧啦,但现阶段先讲解上面这种方法。 最后有必要说明一下目标状态中的那几个’ —— 我们把这个提交移动了两次,每移动一次会产生一个 ';而 C2 上多出来的那个是我们在使用了 amend
参数提交时产生的,所以最终结果就是这样了。
也就是说,我在对比结果的时候只会对比提交树的结构,对于 ’ 的数量上的不同,并不纳入对比范围内。只要你的 main
分支结构与目标结构相同,就算通过啦。
3、实战
从前面了解到具体的实现的步骤,就可以开始实战啦。这里先给大家说一下这个练习网站的一些使用技巧,
- help 指令
执行这个命令后就会有个帮助信息的弹窗。
- levels 指令
执行完这个命令之后就能看到关卡目录了。
- 目标
- 开始结构
(1)第一种方法:rebase
- Step 1、重新排序
首先我们需要将提交重新排序, 然后把想要修改的提交记录挪在最前面。
git rebase -i HEAD~2
运行结果如下图所示:
- Step 2、修改提交
使用 commit
的 amend
参数来对提交记录进行修改。
git commit --amend
运行结果如下图所示:
- Step 3、调回顺序
修改完提交记录后,在把提交顺序重新调整回去。
git rebase -i HEAD~2
运行结果如下图所示:
- Step 4、合并main
最后将改动重新合并到 main
分支中。
git rebase caption main
运行结果如下图所示:
达成目标之后就会有成功的提示。
(2)第二种方法:cherry-pick
前面也说到了,除了用 rebase -i 外,还要其他方法,接下来就来讲讲怎么用 cherry-pick 来实现吧,注意:本方法不是适用于通该关,因为网址作者限制了在本关使用 cherry-pick 命令。 所以我们只能去非 DEMO 版本是实现了。
网址的 非 DEMO 版本 这个连接点击进入,进入之后立马只有 main 分支,需要我们去搭建题目环境,以下就是搭建题目环境的命令。
git checkout -b newImage
git commit
git checkout -b JMFive
git commit
通过以上命令就可以得到跟题目一样的分支了,这样我们就可以开始解决问题啦,运行结果如下图所示:
- Step 1、指向main哈希值
这里需要分离 HEAD
状态,不建议直接指向 main
分支进行操作,而是通过操作 HEAD
指针,最后在把 HEAD
合并到 main
分支即可。
git checkout C1
运行结果如下图所示:
- Step 2、选择需修改的分支
通过 cherry-pick
选择需要修改分支,生成出新的分支。
git cherry-pick C2
运行结果如下图所示:
- Step 3、修改提交
使用 commit
的 amend
参数来对提交记录进行修改。
git commit --amend
运行结果如下图所示:
- Step 4、指向 main
将 分离 HEAD
状态重新指向 main
分支。
git checkout main
运行结果如下图所示:
- Step 5、合并 main
最后将改动重新合并到 main
分支中。
git cherry-pick C2'' C3
运行结果如下图所示:
总结
感谢观看,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹
也欢迎你,关注我。👍 👍 👍
原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉
更多专栏订阅:
- 😀 【LeetCode题解(持续更新中)】
- 🌼 【鸿蒙系统】
- 👑 【Python脚本笔记】
- 🚝 【Java Web项目构建过程】
- 💛 【微信小程序开发教程】
- ⚽ 【JavaScript随手笔记】
- 🤩 【大数据学习笔记(华为云)】
- 🦄 【程序错误解决方法(建议收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!