解决Git Revert操作后再次Merge代码被冲掉的问题

Git Revert后Merge导致代码丢失问题解决方案
本文讲述了在Git中错误地进行合并操作后,通过Revert修复但引发新问题的过程。当使用Revert反向删除错误合并,再进行Merge时,代码可能丢失。原因是Revert不改变合并历史,导致快进合并。为了解决这个问题,尝试了非快进合并(git merge master --no-ff)作为可能的解决方案。
部署运行你感兴趣的模型镜像

前几天由于一次错误的代码合并操作dev_cxn--->release--->master,导致还没有经过测试的代码被带到线上,并且在经历了几次其它分支的Merge后才发现线上代码有问题,当时想到两种解决办法:

1.reset到错误的合并之前,把后面的Merge操作再执行一遍。

2.直接使用revert,把错误的合并反向删除掉。

考虑到方法1操作动静太大,便使用了方法2,十分方便。

但是昨天发现了新的问题,即把master合并到dev_cxn时,发现dev_cxn上最后一次提交的代码丢失。经过检查,发现这次合并是fast-forward,而master上的revert操作不会改变合并历史,只是反向删除,所以版本节点是向前更新的,如下:

分支master  ---o---o---o---M---x---x---W
              		  /
 分支dev_cxn      ---A---B 

M是那次错误的合并,W是revert操作,此时若把master合并到dev_cxn,将会直接快进到W节点,导致代码丢失。

于是想到把dev_cxn合到master,结果发现Already-up-to-date,失败。。

再想到如果不用快进合并的方式,也许能够解决问题,于是执行git merge master --no-ff

--no-ff

Create a merge commit even when the merge resolves as a fast-forward. This is the default behaviour when merging an annotated (and possibly signed) tag.

结果发现,即使不用快进的方式,revert那次操作还是会实实在在的执行进dev_cxn分支,失败。。。

由于只是要让dev_cxn的代码不被删除,便查了下Git是否能够执行类似“增量合并”的merge操作,无果。。。

最终在StackOverflow上找到一个类似问题:

原来只需要对那次revert操作再执行一下revert就行了,so easy。。。

Git不愧是地球第一版本管理神器。。可怜可怜可怜


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值