昨天不小心将下一期的代码合到了本期要发布的上线分支
赶紧尝试reset,但是上线分支,一般开发人员是不可以直接reset的~~
没办法,找到主R,先revert上次提交的代码,然后我再删掉下期修改后,重新做merge Request(之后称之为mr4)
emmm~ 我的问题到这里看似解决了!
but!! 主R告诉我,你必须重新把Revert的再Revert回去,不然Git会认为你不需要这些内容。也就是说,下一期mr的时候,会出现问题!
但是,当我尝试2次reset的时候,gitlab报错
是因为我mr4 重新上传了代码,revert回不去了!!!
秉承着“谁创建,谁管理”的原则。我必须在问题没有扩大之前将其解决掉,不然以后上线分支pr越来越多。处理起来更加麻烦了。
解决方法
从master拉出一个新的分支,然后将revert过的再次revert回去,然后merge到develop里
流程图
用图像表达的更清楚一点,整个流程分三步:
- 错误的拉取分支,并提交到master上(白色部分)
- 发现错误,回滚,重新提交bugfix代码(淡紫色部分)
- 将2中revert的再次revert,防止下次merge出现代码丢失的问题(淡蓝色部分)
复盘
之前遇到这种情况,我都是直接reset。但是项目人员较多的情况下,可能mr3之后又会有其他的merge,这种情况下是reset会将别人的代码也还原掉,而来项目大了,一般开发人员也没有权限去reset的。所以了解revert还是很有必要的!
拉取分支一定要谨慎,这次幸亏是一个临时的bugfix,假如代码量比较多。处理起来可能会很困难。
revert之后一定要给人家revert回来,亲自试了一下,结果下次提交确实会被忽略。