前言:
一般项目在开发阶段,都会创建多个分支,用于不同开发阶段的版本发布
如:master、dev、pro、feature、hot_fix…等,之所以会有这种多分支情况,就是项目在不同的开发阶段,新的业务会对之前业务造成影响,所以建多个分支用来发布不同的迭代版本,直至一个迭代完成测试、上线。
示例
说明:
将某个分支的一个(或多个)提交合并到另一个分支,注意不是merge,merge是全部合并、而我们要的是可选择的,就要用到 Cherry pick
参数解释:
git cherry-pick [commit] 命令的常用配置项如下。
(1)-e
打开外部编辑器,编辑提交信息。
(2)-n
只更新工作区和暂存区,不产生新的提交。
(3)-x
在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到这个提交是如何产生的。
(4)-s
在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。
(5)-m parent-number
如果原始提交是一个合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。
-m配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。
示例:
例如:有 test、dev 两个分支,dev有多次提交(按照提交顺序)[A、B、C、D、E],我想合并提交B到test分支
1.查看 dev 提交版本号记录
git log dev
2.切换到待合并分支 test
git checkout test
3.执行合并
git cherry-pick 6b4182a807ef4e30b7da3ea9bf7211b4de9a7b6f
4.然后推到远程
git push
补充:
1.如果想一次合并B、C两个提交,如下:
git cherry-pick A B
2.我想合并从B到D的所有提交
git cherry-pick B…D
注意:
上面提交B要早于D,不然不会成功,而且不会包含提交B,也就是只有C、D两次提交,如果要包含B提交,则要如下:
git cherry-pick B^..D
-END-