记一次git回退操作
2020年4月1日
本来操作 是A(低版本分支) 提交merge request 到 B(高版本分支),结果一时手贱,,把B merge 到了A分支,污染了A分支。
此时我的背后已经冒了冷汗,,因为A分支已经验证完毕,准备上线了。
还好我记得有一个回退功能,reset,可以使git回退到前一个commit
具体操作,总共分三步:
第一步:git checkout到你要恢复的那个分支上
第二步:git reflog查出要回退到merge前的版本号
第三步:git reset –hard [版本号]就回退到merge前的代码状态了
至此回退代码的目标达成。
也可以用idea操作:
完成reset之后,会把你前面错误的merge操作里所有的高版本的提交记录全部回退。如果你没有push,到这里就完成了。
但是你向我一样抽抽,merge之后还push了,这里单单reset,想再push到A分支,会被rejected。
此时有两种方案
一,是强制提交 git push -f origin A分支
二,基于reset之后拉取一个新分支C,此时我们想要的是把C分支替换成A,所以把A分支删掉,再基于C分支创建一个分支叫A