使用git开发的过程中,存在误提交的时候怎么办呢?不用慌张,强大的git提供了两种版本回退的方式,可以让你恢复提交之前的内容:
方式一:reset(不推荐)
通过reset的方式,把head指针指向之前的某次提交,reset之后,后面的版本就找不到了
操作步骤如下:
1、在gitlab上找到要恢复的版本号,如:
139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
2、在客户端执行如下命令(执行前,先将本地代码切换到对应分支):
git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
3、强制push到对应的远程分支(如提交到develop分支)
git push -f -u origin develop
OK,现在到服务器上看到的代码就已经被还原回去了。这种操作存在一个问题,服务器上的代码虽然被还原了,但假如有多个人在使用,他们本地的版本依然是比服务器上的版本高的,所以,别人再重新提交代码的话,你撤销的操作又会被重新,你上面的操作也就白操作了。解决办法是,让别人把本地的分支先删掉,然后重新从服务器上拉取分支
方式二:revert(推荐)
这种方式不会把版本往前回退,而是生成一个新的版本。所以,你只需要让别人更新一下代码就可以了,你之前操作的提交记录也会被保留下来
操作步骤如下:
1、找到你误提交之前的版本号
2、git revert -n 版本号
3、git commit -m xxxx 提交
4、git push 推送到远程
OK,版本还原了,通知其他人更新一下代码吧
这个时候突然又发现不需要回退了,刚才那些消失的代码又要重新找回来了,别担心,咱们 Git 强大着呢!
git reflog
定义:查看命令操作的历史
查找到你要的 操作id,依旧使用 上文说的 git reset --hard id。又回退到当初一模一样的版本啰!