cherry-pick

一般分支之间的合并会使用 git merge 来操作,但是也会出现只需要合并某一个分支的情况,而不是把整个分支都merge过来。

git中从1.7.2版本开始,引入了一个 cherry-pick 命令,可以只合并部分commit:

git cherry-pick <commit>

git cherry-pick 074f3fe851c55748e95ba3811f0d53ef896d8dd2

这样就只会把 074f3fe851c55748e95ba3811f0d53ef896d8dd2 commit的内容pull到当前的分支,这样会得到一个新的commit。

多个commit

可以用空格指定多个commit: git cherry-pick A B C D E F

范围merge

cherry-pick 也可以指定连续范围merge,使用两次版本间使用 .. 连起来

git cherry-pick A..B

这样会把从版本A(不包含)到B(包含)即(A,B]的版本pull到当前分支

也可以多段跟范围联合使用

中间可能出现冲突,需要按照冲突解决的方式去处理。

TortoiseGit 客户端

如果使用TortoiseGit 客户端来合并指定commit,也是可以的。

先切换到合并的目标分支(git checkout),然后查看日志(git log),在左上角选择合并来源的分支名,将日志切换到来源分支,然后选中需要合并的commit,鼠标右键有个 Cherry Pick this commit...,点击按照提示进行即可。多个commit合并使用ctrl或者shift选中多个即可。