1.命令
#单独合并一个提交
git cherry-pick commitHash
#同上,不同点:保留原提交者信息。
git cherry-pick -x commitHash
#Git从1.7.2版本开始支持批量cherry-pick,就是一次可以cherry-pick一个区间的commit。
#start-commitHash到end-commitHash之间(左开右闭,不包含start-commitHash)的提交cherry-pick到当前分支;
git cherry-pick start-commitHash..end-commitHash
#有"^"标志的表示把start-commitHash到end-commitHash之间(闭区间,包含start-commitHash)的提交cherry-pick到当前分支。
git cherry-pick start-commitHash^..end-commitHash
其中,start-commitHash到end-commitHash只需要commitHash的前6位即可,并且start-commitHash在时间上必须早于end-commitHash
以上合并,需要手动push代码。
2.提交
主分支master,另外还有个开发dev,想增加一个dev版本中的功能到master中,这里就可以使用cherry-pick了,其实也就是对已经存在的commit 进行再次提交.
#切换到master
git checkout master
#
git cherry-pick 47690cc5c # 47690cc5c,是dev中的版本
如果顺利,就会正常提交。结果:
如果在cherry-pick 的过程中出现了冲突
就跟普通的冲突一样,手工解决合并冲突
# 看哪些文件出现冲突
git status
第一步将(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。
#解决代码冲突后,
vim file_name
#修改的文件重新加入暂存区
git add file_name
#再次执行 参数有(--continue | --quit | --abort)
#--continue 继续执行
#--abort 发生代码冲突后,放弃合并,回到操作前的样子。
#--quit 发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子
git cherry-pick --continue