背景
一般公司里开发某个系统都是多人协作开发,使用Git作为代码版本管理工具,那你可能或者肯定会遇到其他人错提代码到线上,回退之后其他人再去pull的时候,代码并不会改变,本以为已经更新了,后续再次提交的时候,线上的代码又被“污染”了,然后再次回滚,其他人依然没有pull到新代码,然后往复循环,最后搞得大家都很疲惫。
场景重现
准备
重现很简答,随意在远程git创建一个仓库,我在gitee创建一个测试库,然后本地创建两个目录模拟两个人在同时开发,一个student1,一个是student2,然后分别在两个文件夹下clone仓库,如图
然后我们对student1中的update.txt文件每增加一行,就commit和push一次,模拟代码提交了四次,如图
然后将student2下的代码pull一下,保持跟远程的一样
重现
现在突然发现student1下的代码提交错了,代码需要回滚到第二次提交的地方,这里有两种方法,可以用Reset也可以用Revert来回滚,简答的来说用Reset会把第三次和第四次提交的记录直接删掉,如果用Revert他会生成第五次提交,即把第二次提交的记录重新提交一次变成第五次提交,这