git误操作,将版本彻底回退到之前的版本

1,724 阅读2分钟
  1. 找到需要回退的版本commit

    git log 命令行列出所有commit,找到需要回退的commit

    或者

    idea右键项目git -> show history,找到列表中需要回退的commit,右键 Copy Revision Number,复制出commit

  2. 找出commit后进行回退

    git reset --hard e7d585bfecaffc885f252cea13b9801f41f075ad(这是commit,需要改成自己的)

  3. 回退成功, push

    git push会被拒绝, 可以强制推送git push -f , 强制推送非常危险,确定整个小组都同意强制恢复为这个版本再做此操作。

  4. 注意项:如果有人已经拉取过你误操作的代码了,请强制推送后让他本地执行2操作,本次reset一次后,再进行pull操作,确保不会pull到你回退的版本后,但是他本地还留有之前的代码再次重新提交上来.

拓展知识:

git reset是指将当前head的内容重置,不会留log信息。

    git reset HEAD filename  从暂存区中移除文件
    git reset –hard HEAD~3  会将最新的3次提交全部重置,就像没有提交过一样。
    git reset –hard commit (38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
    
    
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:

    git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容