目录
cherry pick(筛选合并)和 merge(合并)的区别:
问题现象
最近在项目中遇到一个问题:
使用IDEA开发工具在自己创建的代码分支(以下称“本地分支B”)上commit并push代码时,change记录是这样的:
可以看到本次提交到本地分支B的代码涉及到8个文件的改动,但是当我在gitlab上发起合并请求时,却发现commits数和changes数有异常:
遇到这种情况该如何解决呢?
问题分析
当我们发现gitlab合并分支请求时的代码改动(commits和changes)与本地分支的(commit&push)不一致时,这说明本次合并存在隐藏的代码差异问题,此时应该拒绝和关闭本次合并请求,不要进行代码合并。
那么,就来分析一下出现这个问题的原因吧!
操作步骤如下:
步骤1:
在IDEA开发工具中,切换到本地分支A,然后拉取远程分支A的最新代码。
步骤2:
基于本地分支A创建本地分支B。
步骤3:
在本地分支B改动代码、提交并推(commit&push)至远程分支B。
步骤4:
在gitlab上发起合并请求,合并本地分支B到远程分支A。
注意:
此时应该还未点击同意合并请求按钮(即本地分支B还未真正合并到远程分支A)。
已经点击了同意合并请求按钮(即本地分支B已经合并到远程分支A了)的场景在文末的最后一节【 拓展:步骤4的合并请求被同意后该如何解决?】中也会提到解决方法。
操作完上面这些步骤后,就出现了开头提到的问题现象。
但是认真梳理了这些操作步骤之后,并没有找到问题原因,因为这些步骤没有问题,那么问题到底是为啥呢?
经过我不断地测试和问题复现,才终于确定:上面这些操作步骤确实没有问题,而问题发生的原因其实是在这些操作步骤之前就存在了!!!
其实在很久之前,为