本来操作 是A(低版本分支) 提交merge request 到 B(高版本分支),结果一时手贱,,把B merge 到了A分支,污染了A分支。

此时我的背后已经冒了冷汗,,因为A分支已经验证完毕,准备上线了。

还好我记得有一个回退功能,reset,可以使git回退到前一个commit

具体操作,总共分三步:

第一步:git checkout到你要恢复的那个分支上

第二步:git reflog查出要回退到merge前的版本号

第三步:git reset –hard [版本号]就回退到merge前的代码状态了

至此回退代码的目标达成。

也可以用idea操作:

1585704783295

1585704853225

完成reset之后,会把你前面错误的merge操作里所有的高版本的提交记录全部回退。如果你没有push,到这里就完成了。

但是你向我一样抽抽,merge之后还push了,这里单单reset,想再push到A分支,会被rejected。

1585704853225

此时有两种方案

一,是强制提交 git push -f origin A分支

二,基于reset之后拉取一个新分支C,此时我们想要的是把C分支替换成A,所以把A分支删掉,再基于C分支创建一个分支叫A