git : 合并问题记录

问题描述:git分支问题

  • 如下提到三个分支说明:
    • master 主分支
    • feature_x 产生问题的主要分支
    • feature_y 需求提出方,发现问题的分支
  • 开发进行到某一阶段,需要将已投产的主分支master功能合并进分支feature_y后,显示对feature_y的开发内容有删除动作,产生疑问。

原因排查:

  1. 开发人员误将功能分支feature_x合并进到master分支,后发现该合并有问题,继而执行了revert操作,产生一个revert分支用来回退操作同时合并进master分支。
  2. 由于feature_x分支在与uat测试分支进行合并的时出现冲突,使用了gitlab的线上冲突解决方案,导致将uat测试分支直接整体合并进了feature_x。因此feature_x往master合并的时候,带入了大量的uat记录。后执行回退。
  3. 此前feature_y 已经合并过uat,但是由于问题1、2,导致feature_y的内容出现在master的历史中,并且又被回退了。那么合并master与feature_y时,寻找共同祖先节点进行三相合并,找到的共同祖先是feature_y的commit节点A。相对于节点A,feature_y实际上没有操作,但是master有回退操作,从master的角度看是针对节点A是删除操作,因此出现了问题描述中的情况。

问题解决方案:

  • 建议该项目组直接将master回退到feature_x分支合并前的版本,使用git reset –hard commit-id ,去干掉所有feature_x的历史,master本身的合并,可以把常规的再合并一次。