跳到主要内容

Git历史版本回滚

· 阅读需 2 分钟
Junjie

查看历史记录 如果内容偏多,需要使用方向键上下滚动,按q退出

  • git log
  • git log --oneline
  • git reflog 查看所有操作记录

进行版本回退时,不需要使用完整的哈希字符串,前七位即可. 版本切换之前,要提交当前的代码状态到仓库

找到想要回退的版本号之后,在本地 Git 仓库执行如下命令:

git reset --hard <版本号> 或者 git reset --soft <版本号>

对于上述两条命令,仅有--hard--soft参数的不同,两者的区别是:

  • --hard,抛弃当前工作区的修改
  • --soft,回退到之前的版本,但保留当前工作区的修改,可以重新提交

执行完本地回滚之后,还需要执行如下命令,同步远端的内容:git push origin <分支名>

在执行上述命令的时候,可能会提示本地的版本落后于远端的版本,因此我们还需要在上述命令中加上--force参数:git push origin <分支名> --force

回退命令:

  • git reset --hard HEAD^ 回退到上个版本
  • git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
  • git reset --hard commit_id 退到/进到,指定commit的哈希码(这次提交之前或之后的提交都会回滚)

回滚后提交可能会失败,必须强制提交

强推到远程:(可能需要解决对应分支的保护状态)

git push origin HEAD --force