目录
1、git cherry-pick
本系列的第一个命令是 git cherry-pick
, 命令形式为:
$ git cherry-pick <提交号>...
如果你想将一些提交复制到当前所在的位置(HEAD
)下面的话, cherry-pick 是最直接的方式了。我个人非常喜欢 cherry-pick
,因为它特别简单。
这里有一个仓库, 我们想将 side
分支上的工作复制到 main
分支。
你会立刻想到了之前学过的 rebase
。但还是看看 cherry-pick
吧!
输入以下指令:
$ git cherry-pick C2 C4
我们只需要提交记录 C2
和 C4
,所以 Git 就将被它们抓过来放到当前分支下了。 就是这么简单!
2、交互式的 rebase
当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 很合适 —— 没有比这更简单的方式了。
但是如果你不清楚你想要的提交记录的哈希值? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法。
交互式 rebase 指的是使用带参数 --interactive
的 rebase 命令, 简写为 -i
如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
在实际使用时,所谓的 UI 窗口一般会在文本编辑器 ( 如 Vim ) 中打开一个文件。
当 rebase UI界面打开时, 你能做3件事:
- 调整提交记录的顺序(通过鼠标拖放来完成)
- 删除你不想要的提交(通过切换
pick
的状态来完成,关闭就意味着你不想要这个提交记录) - 合并提交。简而言之,它允许你把多个提交记录合并成一个。
看个实例:
输入指令:
$ git rebase -i HEAD~4
假设将c4与c5换位置,则: