解决git merge对应版本时代码覆盖问题

2021-08-19  本文已影响0人  成神之路_be73
场景:
  1. 初始基于项目A的版本v1.0.0定制化开发了一个项目B; 变成了项目B的v1版本
    一段时间后,要求将项目A的v3.0.0 合并与定制化项目B的v1版本进行代码合并,升级系统
项目状况
  1. git master 主分支
    git develop 开发分支
行动
  1. 基于项目B 的develop 拓展出developV3 将项目A的v3.0.0 commit到developV3 进行push
    再返回develop分支上 输入 git merge developV3
    本来以为万事大吉 但是运行起来后发现develop上的内容已经完全被developV3 进行了覆盖,全部变成项目A的v3.0.0版本代码
解决方法
  1. 遇到问题,当然要询问度娘了,
    首先要保证当前分支只有 原来的 master 和develop分支
    因为我个人怕出错, 所以我基于develop又拓展出来一个分支dev
    dev 上 的代码变更为项目A的版本v1.0.0
    再基于dev拓展出devMerge 代码为 项目A的v3.0.0;
    这个时候,将dev上的代码升级为项目B的v1版本;
    然后在dev分支上 输入 git merge devMerge
    可以看到代码已经实现了合并, 但是会有冲突, 这个时候需要自己手动解决
    最后合并完冲突后, 可以切换到develop分支上,将本地代码手动替换成dev上已合并好的代码(关于这步操作,稍后会在第5块做解释),
    直接commit并push后,就会发现develop分支上,已经是合并后的代码了,大功告成
    多余的dev和devMerge就可以删掉了
回答上面的问题, 为什么要手动进行替换
  1. 实践出真理
    本来我是尝试将在develop分支上合并dev的, 但是发现有冲突,需要merge,相当于把我在dev分支上合并devMerge分支上的操作再做一遍, 我就觉得比较麻烦
    后来我就考虑重命名的问题, 将dev重命名为develop,develop换成developV1 ,(重命名的操作,可以看这里哦https://www.jianshu.com/p/d8b71d8a95f0
    但是又出现了问题,查看log, 只有项目A的v1.0.0和最新全部合并后的代码 , 没有项目B以前一期开发log记录,这样,如果想回退或者想打版本的话,就找不到原来的开发记录了
    所以想出来了手动替换,在原来的开发记录上,直接提交合并后的代码,方便溯源
参考文章
  1. https://blog.csdn.net/qq_38383650/article/details/116298151?utm_source=app&app_version=4.10.0
上一篇下一篇

猜你喜欢

热点阅读