场景
开发需要将某分支某挑选几条(非全部记录)合并到另一个分支怎么办?
standard-V8.1-hotfix_1是V8.1发版后的飞虎队分支,standard-V8.1SP1-develop是正在研发中的新版本分支,两个分支的代码差距巨大。
而此时standard-V8.1-hotfix_1近期某一个工程提交了几个代码记录需要合并到standard-V8.1SP1-develop以保证新版本问题修复,可以采用cherry pick的能力完成。
基础工具
基础工具为:IDEA 2021.2.2

这里讲解的是一个工程下的一个或多个提交记录合并到另一个分支。
合并思路
1.基于standard-V8.1SP1-develop复制一个本地分支V8.1SP1-develop-cherrypick-from-8.1hotfix_1,可以使用idea自带的create new branch能力完成。
注意:一定是从Remote Branches远端仓库创建分支,本地仓库代码不一定全。

2.分支命名为:V8.1SP1-develop-cherrypick-from-8.1hotfix_1(这个名字可以由自己决定),

随后,当前工程已经切换到自建分支V8.1SP1-develop-cherrypick-from-8.1hotfix_1

3.打开Git工具视图:
方法一:直接底部找到Git页签,切换到该页签
方法二:快捷键Alt+9
方法三:顶部工具栏View=>Tool Windows=>Git

4.以ctp-core工程为例,通过Git工具先找到原分支standard-V8.1-hotfix_1里面的提交记录
4-1)先搜索到远端的standard-V8.1-hotfix_1,此时能搜索到所有工程

4-2)过滤工程,选择自己想要的工程,本次示例是演示ctp-core则本次过滤此工程,如下截图记录就是ctp-core在standard-V8.1-hotfix_1分支的提交记录

5.执行cherry pick操作:选择需要合并的某一条或几条记录,鼠标右键选择“Cherry-Pick”。

如果没有冲突,则会自动进行合并,如果有冲突会弹出冲突提示框,需要自己手动排除差异合并:

此时检查本地ctp-core工程的git history就能看到Cherry pick记录:

6. 随后代码push到远程分支:上一步只是本地进行了合并,但代码未推送到远端仓库,需要进行一次push即可完成推动。

7. 登录gitlab,确认提交记录,确认无误后,最后发起merge request将自建分支V8.1SP1-develop-cherrypick-from-8.1hotfix_1的记录合并到standard-V8.1SP1-develop

说明
为什么要自建V8.1SP1-develop-cherrypick-from-8.1hotfix临时分支?
为了防止直接合并多了,所以一般都是临时分支先确认提交记录无误后再合并到主分支。