场景
线上分支:master
你开发的分支:dev1
同时开发的分支:dev2
dev1分支开发的代码已经上线,并且已经merge到master
同时dev2分支也已上线,并且已经merge到master
这时发现dev1的巨大bug,线上版本要把这个分支的代码全部移除。
想要达到的效果
我们要撤销所有dev1的合并,并且保留dev2的代码。
同时本地dev1的分支不想删除这些代码,还有在这基础上开发。
master分支
如果使用reset,那么线上的几个提交记录都不会保留,达不到我们想要的效果。
这里使用git revert。
首先我们要撤销所有dev1的更改,找到dev1的两次commit id
git revert 63db9b1228c9e38a015513f834a42fa55002fca8
git revert a407174c5df3e47e1866663e4c3fe611419eb5a8
此时master已经达到我们想要的效果:
开发分支
这时回到我们的dev1分支,修复bug,我还要保留以前提交的代码。
但是在上线前总要先merge master,但是master的两次revert是领先你的,一旦merge后你的代码就没有了。
下面是