一、使用场景
一、基本命令
(1)git cherry-pick A 【参数A可以是提交的哈希值,也可以是分支名,代表该分支的最新提交】
(2)git cherry-pick A..B 【将A到B之间所有的提交都转移过去,但不包含A,A必须早于B】
(3)git cherry-pick A^..B 【A到B之间连续且包含A】
代码冲突:
(1)git cherry-pick --continue 【再解决完代码冲突后,将修改好的文件重新add到暂存区,然后执行 --continue 继续执行】
(2)git cherry-pick --abort 【发生代码冲突后,放弃合并,回到操作前的样子】
(3)git cherry-pick --quit 【发生代码冲突后,退出cherry-pick, 但是不会操作前的样子】
二、实践操作
现在有两个分支,
假设此图是分支为branch_1, 有5次提交记录, 版本号分别为a1..e1。
假设此图是分支为branch_2, 有2次提交记录。
首先使用 git cherry-pick branch_2, 使用分支名进行挑拣,会将branch_2分支最新的log记录提交
使用git log查看,会看到已经把对方的最后一次提交给合并过来了,当然使用版本号也是一样的效果
那如果需要合并的提交太多,且是连续性的,该怎么做呢?
在branch_2分支上执行git cherry-pick a1..e1, 将b1, c1, d1, e1版本号的提交拣选也就是合并过来。
此时再执行git log, 会看到明明cherry-pick a1..e1, 之间应该是总共有5次提交的,却只有4次提交被合并过来,因为git cherry-pick a1^..e1才会将前五的记录都合并过来。,
推荐阅读文献: