6.坑!!!gitlab在线合并解决冲突后反向合并问题。(cherry-pick)

项目场景:

在开发项目时,由于新做的需求是下一版本上线的功能,不能在dev上直接开发,所以在dev分支基础上新建一个分支tmp。也就是在dev和tmp同时进行开发。

问题描述:

开发一段时间后,需要将dev合并到tmp。登陆gitlab在线将dev合并到tmp,在合并时出现了conflicts,在线解决冲突之后,再点击确定合并,结果反向将tmp合并到dev分支了!!

原因:

官方解释是,解决冲突后会将目标分支tmp合并到源功能分支上。参考博主分析:https://blog.csdn.net/u013487071/article/details/123485341

避坑:

不要gitlab在线合并分支,最好在本地用工具合并(idea、vscode)。

解决问题:

如果已经出现反向合并了(tmp多次提交的日志已经穿插在了dev提交日志中),现在需要在dev分支上移除掉tmp分支提交的代码。我选择的方式是查看dev、tmp的提交记录,查找dev最早没有被tmp污染的commitID,然后基于此commitID新建一个新的分支dev_copy。然后通过git cherry-pick commonID 命令将dev上在此commitID之后的提交记录一一合并到dev_copy。最后废弃掉被污染的dev分支,留下dev_copy分支作为开发分支。 一次次的cherry-pick比较繁琐,但还是解决了问题。

在用cherry-pick之前我有试过git revert、git reset 等几种方式,结果代码越来越乱......

你可能感兴趣的:(四,部署配置,docker容器化配置,gitlab,git)