访问个人博客git
使用 git 进行项目的版本控制时,确定会遇到回滚版本的状况,回滚有两种,一种是本地仓库回滚,另一种是远程仓库回滚。如下详细讲解两种回滚方式,本文主要讲解远程回滚,以及常见使用误区。测试
<!--more-->spa
本地仓库回滚
本地回滚就很简单,只是要撤销 commit 信息便可。能够直接使用 Reset HEAD进行回滚。
版本控制
HEAD^ 是还原到上一个版本,HEAD^^ 是还原到上上一个版本。 Reset Type 有三种:blog
mixed 默认方式,只保留源码,回退commit和index信息 soft 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。若是还要提交,直接commit hard 完全回退,本地源码也会变成上一个版本内容开发
错误的远程仓库回滚方式
远程仓库代码回滚,若是上 Google 上一搜,基本出来的答案都是使用 Reset HEAD 加上 git push -f 强制提交的方式。get
我本地测试了一下,若是有两我的同时在这条分支上开发,其中一我的 小 A 若是使用这种方式进行回滚了远程仓库代码,另一我的 小 B 此时本地仍是回滚以前的代码,小 B 那里就会出现本地代码版本高于远程分支版本的状况,此时若小 B 进行了 push 操做,以前小 A 回滚的代码就又会被推送到远程的仓库了。除非小 B 在回滚后,将其本地仓库的版本也进行回滚。才能保证不会把回滚的代码从新 push 回远程仓库,可是若是开发人员多,就没法保证全部开发人员的本地分支都回滚!源码
所以,不要使用 git push -f 这种方式来强制回滚远程仓库代码!博客
正确的远程仓库回滚方式
如图所示,如今须要将远程仓库回滚到 dev-103 此次提交点。it
选中 dev-103 这一行,右键选择 Revert
这里提示须要 commit
commit 以后,push 到远程仓库中。最终结果以下:
新增了一条提交记录,查看代码已经被回滚了
其余开发人员若是进行了 pull,其本地仓库也被正确回滚到了 dev-103 提交点,就无需再担忧回滚的代码又被从新 push 到远程仓库啦。
搞定,收工!