目录
Git用法高级篇在上一篇文章中Learn Git Branching 学习笔记(高级篇)_流年--by gone的博客-CSDN博客
这篇文章主要来介绍Git移动提交记录的一些操作。
一、移动提交记录篇
1.Git Cherry-pick
本系列的第一个命令是git cherry-pick,命令形式为:
git cherry-pick<提交号>
如果你想将一些提交复制到当前所在的位置(HEAD)下面的话,Cherry-pick是最直接的方式了。我个人非常喜欢cherry-pick,因为它特别简单。
这里有一个仓库,我们想将side分支上的工作复制到main分支,立刻想到了之前学过的rebase。
git cherry-pick C2 C4
我们只需要提交记录C2和C4,所以git就会把他们抓过来放到当前分支下。
题目:
要通过此关,只需要简单的将三个分支中的提交记录复制到main上就可以了。目标窗口展示了我们想要哪些提交记录,如果不小心关掉了的话,通过show goal命令可以打开,左上角也有“显示目标按钮”。
答案:
git cherry-pick C3 C4 C7
2.交互式rebase
当知道所需要的提交记录(并且还知道这些提交记录的哈希值)时,用cherry-pick再好不过了——没有比这更简单的方式了。
但是如果你不清楚你想要的提交记录的哈希值呢?型号git帮你想到了这一点,我们可以利用交互式rebase——如果你想从一系列的提交记录中找到想要的记录,这就是最好的方法了。
交互式rebase指的是使用带参数--interactive的rebase命令,简写为-i
如果在命令后增加了这个选项,git会打开一个UI界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
在实际使用时,所谓的UI窗口一般会在文本编辑器——如vim中打开一个文件,考虑到课程的初衷,网站里弄了一个对话框来模拟这些操作。
当 rebase UI界面打开时, 你能做3件事:
- 调整提交记录的顺序(通过鼠标拖放来完成)
- 删除你不想要的提交(点击切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
- 合并提交。它允许你把多个提交记录合并成一个。
看个例子,当点击下面的按钮时,会出现一个交互对话框。对提交记录做个排序(当然也可以删除某些提交)
git rebase -i HEAD~4
(命令的动作:从master到HEAD~4,这整串分支,从HEAD~4位置复制了一份)
选择不复制的节点,本例中我选择C2和C3。
git严格按照在对话框中指定的方式进行了复制。
题目:
要通过本关, 做一次交互式的 rebase,整理成目标窗口中的提交顺序。记住,你随时都可以用 undo、reset 修正错误。
答案:
git rebase -i HEAD~4
之后删除C2,调整C4C5的顺序
移动提交记录篇完结撒花~