基本用法
git cherry-pick
命令的作用,就是将指定的commit
应用于其他分支
1 | git cherry-pick <commitHash> |
上面的命令会将指定的提交<commitHash>
应用于当前分支,并在当前分支上产生一个新的提交
举例来说,现在仓库有master
和dev
两个分支
其中master
的最新提交为5f4a94b
,dev
分支的最新提交为aa18072
,如果我们想把dev
上的提交aa18072
应用于master
上,就可以使用git cherry-pick
1 | 切换到master分支上 |
执行完后我们再查看master
分支,会发现master
分支上多了和dev
分支上相同的提交,但它们的commitHash
是不一样的
git cherry-pick
命令的参数不一定是commitHash
,也可以是分支名,表示转移指定分支的最新提交,上面的命令也可以使用git cherry-pick dev
进阶用法
转移多个提交
git cherry-pick
支持一次转移多个提交
1 | git cherry-pick <commitHashA> <commitHashB> |
上面的命令会将A,B两个提交转移到当前分支上,并生成两个新的提交
如果想要转移一系列的提交,可以使用以下命令
1 | git cherry-pick A..B |
上面的命令可以将从提交A和B之间的所有提交转移到当前分支上,注意提交A必须早于提交B,否则命令将失败,转移的提交中不会包含提交A,如果想要包含A,可以使用以下命令
1 | git cherry-pick A^..B |
命令选项
git cherry-pick
常用的命令选项
-e
,打开编辑器,编辑提交信息-n
,只更新工作区和暂存区,不产生新的提交-s
,在提交信息末尾加一行操作者签名-x
,在提交信息末尾加一行cherry picked from commit
代码冲突
如果操作过程中发生代码冲突,cherry pick会停下来,让用户决定如何操作
--continue
,用户解决冲突后,第一步将修改提交到暂存区git add .
,第二步使用git cherry-pick --continue
,让cherry pick
继续--abort
,(git cherry-pick --abort
)放弃,回到操作前的样子--quit
,(git cherry-pick --quit
)退出,但是不回到操作前的样子