首页 > 技术文章 > git rebase 与 git cherry-pick 详解

WangXianSCU 2022-06-16 16:17 原文

git rebase 与 git cherry-pick 详解

1. git reabse

在 git 命令中,git rebase命令可以令当前所在分支与指定分支合并,作为一个新提交。但之前的记录保留在原地。他有两种参数形式:

# 将当前记录及当前记录以上的记录(截止到公共父记录),合并到目的分支
$ git rebase <目的分支>
# 将一个记录及此纪录以上的记录,合并到目的分支
# 关键是参数的顺序
$ git rebase <目的分支> <待移动分支>

假设我们当前有如下场景:
image-20220616160410607
执行git rebase main的结果如下:
image-20220616160446255
执行git rebase main C4的结果如下:
image-20220616160610134
另外值得一提的是 git rebase -i

git rebase -i命令可以打开一个交互式的窗口,他有下面两种参数形式:

# 将当前记录及当前记录以上的记录(截止到公共父记录),合并到目的分支
$ git rebase -i <目的分支>
# 将一个记录及此纪录以上的记录,合并到目的分支
# 关键是参数的顺序
$ git rebase -i <目的分支> <待移动分支>

假设我们当前有如下场景:
image-20220616160410607
执行git rebase -i main的结果如下:
image-20220616160759993
可以对本来要用移动的几个节点进行交互式处理。
执行git rebase -i main C4的结果如下:
image-20220616160840230
可以对本来要用移动的几个节点进行交互式处理。

2. git cherry-pick

下面是此命令的格式,可以按指定的顺序择取数个提交,放置在当前节点下方。

$ git cherry-pick <有序参数列表>

假设我们当前有如下场景:
image-20220616160410607
执行git cherry-pick C6 C2的结果如下:
image-20220616161135445

推荐阅读