git代码回滚

好了,记录一下今日的壮举。。。

坐标:百度大厦C座 时间:2018-05-16
事件起因:上次的需求提交多提交了一个不必要的包导师缺陷检测有6个问题不能merge,所以今日在本地删除包之后提交代码,又因为对git操作的不熟悉,对untracked的deleted的文件执行了”git rm -r .”,然后就很尴尬了。。。我就看着我的VSCode的资源管理器那一栏噌噌噌地没了。。。但是还有部分没有删除。emmmmm,立即想到git代码回滚。嗯,解决的过程中,导师问我“你是想报复社会嘛”,emmmmm,其实,,,没想报复社会。。。也没想删库跑路。。。哭唧唧········回归正题——

  1. 首先,你需要打印出你之前所有的commit-id,选择你要回滚到哪一个版本,命令:git log
  2. 接下来,执行git reset –soft commit-id,如果出现如下图所示的fatal,那就继续接着搞吧
    image
    1. 上一步的结果说明你还在合并,所以需要把当前目录所有修改的文件从HEAD中迁出并且把它回复称未修改时的样子
      image
      4.在查看状态git status,可以看到提示你执行下面红框中的命令
      image
    2. 执行git revert –abort之后查看状态,没有问题之后就可以回滚了
    3. 执行git reset –soft commit-id,再去查看状态就可以看到自己刚刚都删了哪些内容
      image
    4. 根据提示再执行git reset HEAD .,这一步的意思是可以把暂存区的修改撤销掉(unstage),重新放回工作区
      image
    5. 继续使用git status查看这些文件处于什么状态,可以看到是not staged,提示我们执行git checkout
      恢复原态
      image
    6. 完了git add将工作区的提到暂存区并且提交commit
      image
    7. 再执行git pull,git push到远程分支,就ok啦~