如何使用git revert 解决不小心把开发代码合并到生产的问题

发布时间 2023-11-16 13:53:37作者: Tassdar

场景如下:

三个开发人员:小明、小白、小黑,在一起开发一个工程项目,项目有两个分支开发dev和生产master

此时小明要去改一个生产的bug,按照正规流程应该是从master创建一个bugfix分支去修改代码,但是由于小明的手误从dev新建了一个分支,在上面写了修复错误的代码,并且提交了合并请求,审核人员也没有认真审核,同意了合并,从而导致dev正在开发的代码和bugfix的代码一起合并到了master

这时小明发现了自己的错误,决定回滚自己的代码,于是在master使用了git revert 回滚了自己的提交,然后重新从master新建了bugfix分支进行修复并合并到master进行上线,但是当他把bugfix合并到dev时,出现了大问题,其他同事在dev提交的代码也被删掉了,于是小明被同事打了一顿之后决定痛改前非认真研究一下git revert 的正确姿势,于是有了此文,

欢迎各位大佬指正。

首先我们来模拟一下场景,项目进行了三次提交,分别提交了三个文件f1/2/3,分别是小明、小白、小黑三人提交,然后我们直接把dev合并到master

 

 

 

合并完成后,我们模拟后悔操作点击界面的revert,成功合并revert之后,你会发现在master分支提交的f1/2/3已经被删除了,达到了回滚效果。

 

 然后我们模拟去改bug的操作,创建bugfix分支,添加一个文件f5之后合并到master分支上,这个时候master上就只剩下了f5之前的 f1/2/3都没了

 

 

然后我们把bugfix合并到dev,你会发现,f1/2/3也被删了,但是我们不想删,因为f1/2/3是本次新开发的代码

 

这个时候,我们只需要打开git日志,找到那条revert的操作,然后再对它进行一次revert ,就可以还原回来了