Git 版本回退

版本回退:

        之前我们也提到过,Git 能够管理文件的历史版本,这也是版本控制器重要的能力。如果有一天你发现之前前的工作做的出现了很大的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了。

        执行 git reset 命令用于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是
要将版本库中的内容进行回退,工作区或暂存区是否回退由命令参数决定:

git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

        --mixed 为默认选项,使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
        --soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
        --hard 参数将暂存区与⼯作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会被覆盖,你没有提交的代码就再也找不回了,所以使用该参数前⼀定要慎重。

        创建readme1 文件,首先写入“hello world” 然后进行提交,其次写入“hello git” 再次提交。

        这时我们想今天版本回退,回退到readme1只有“hello world” 的情况下,首先查看我们当前的日志

        拿到“hello world”提交时的提交日志中的commit id,然后进行版本回退操作。

        最后查看readme1,确实回退到第一次提交时候的状态了。

        如果我们版本回退又后悔了,又想要回到之前的版本去 只需要找到想恢复版本的 commit id

然后reset 即可。  

        如果git log 查看不到coommit id 可能是我们服务器退出过,也可能是多次提交以后,之前的commit id 被冲掉了,我们可以尝试使用 git reflog 命令来查看

        如果 git reflog 命令还是查询不到,那就是没有了。

        值得说的是,Git 的版本回退速度非常快,因为 Git 在内部有个指向当前分支(此处是master的 HEAD 指针, refs/heads/master 文件里保存当前 master 分支的最新 commit id 。当我们在回退版本的时候,Git 仅仅是给  refs/heads/master  中存储⼀个特定的version,可以简单理解成如下示意图:

HEAD 说明:
◦ 可直接写成 commit id,表示指定退回的版本
◦ HEAD 表示当前版本
◦ HEAD^ 上⼀个版本
◦ HEAD^^ 上上⼀个版本
◦ 以此类推...
• 可以使用 〜 数字表示:
◦ HEAD~0 表示当前版本
◦ HEAD~1 上⼀个版本
◦ HEAD^2 上上⼀个版本
◦ 以此类推...

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值