IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Git版本回退之没有push到远端只是在本地commit,跳转到某个本地的commit版本(三种方式)

    水冗水孚发表于 2024-04-16 15:12:18
    love 0

    问题描述

    • 某些情况下,我们在写代码的过程中,一直在本地不断地add、commit
    • 并没有git push到远端服务器
    • 因为一些原因,我们需要跳转到某个commit版本去操作
    • 即回退git的本地commit
    • 本文记录一下,两种方式的回退
    若是提到远端的代码,要回退回滚,可以参考笔者的这篇文章(本篇文章是本地的回退,回滚):https://segmentfault.com/a/1190000041878398

    场景假设

    • 我本地add commit提交了三次
    • 三次分别对应的是111 222 333这三个文件
    • 我通过git log查看这几次的add和commit,如下两图:

    对应的操作文件

    git log日志

    • 需求假设,我需要跳转到第一次本地提交的时候,即有且只有111文件的时候,去做一些操作

    方式一 git reset --hard 某次提交的哈希值

    • 我们通过git log能查看到每一次的提交的哈希值
    • 直接 git reset --hard db0d2eb6 就能切换到第一次的commit版本(哈希值取前8位就行了,不用所有)
    • 当然做这个操作之前,建议切一个新的备用分支
    哈希值不用加引号,错误方式:git reset --hard 'db0d2eb6'

    如下是操作方式图解:

    我们可以通过 git log -g 去查看所有的git操作记录,这样就可以git reset --hard 哈希反复横跳了,如下图:

    方式二 git checkout 某次提交的哈希值

    • 首先用git log -g查看所有的commit
    • 然后再git checkout 某次提交的哈希值
    • 类似上述操作,当然建议新切一个分支,留作备用

    方式三 git revert 某次提交的哈希值

    • 首先用git log -g查看所有的commit
    • 然后再git revert 某次提交的哈希值 去撤销这一次的commit(会出现vim让我们填写撤销原因,直接 :wq 即可)
    • 假如有多次commit,那么多次revert撤销即可
    • 有一个优点就是git的日志log也会记录撤销revert的操作记录
    • 比如有 111、222、333,撤销一次,变成111、222,再撤销就变成111了
    • 类似上述操作,当然建议新切一个分支,留作备用
    A good memory is better than a bad pen. Write it down...


沪ICP备19023445号-2号
友情链接