git 重置(回退提交版本)and用reflog挽救错误重置

git 重置(回退提交版本)

查看.git文件中master文件内容
$ cat .git/refs/heads/master
0e662b107b1c08f515393151649689db317fa539
$ vi .git/refs/heads/master
  1 0e662b107b1c08f515393151649689db317fa539

查看历史提交的管理关系

$ git log --graph --oneline

* 0e662b1 git 第七章begin
* 376db27 css
* fada18c 20171116-01学习查看headhia1
* e157c35 22
* 53e9a0d 测试缩写
* 4461311 提交
* 5562173 初始
分支游标

当前分支指向的是

  • 0e662b1 git 第七章begin
    执行下面代码:
$ git reset --hard HEAD^
HEAD is now at 376db27 css
$ cat .git/refs/heads/master
376db27efde034a620699c3f01ac12133c7c2a81

master 文件中commitid变成上一次提交的 id,而且观察项目修改的文件被还原。重置命令不止重置到前一次。还可以重置到任意一次历史提交。
注意: 重置命令很危险。会彻底丢弃历史修改。不能通过查看历时id,再次使用重置命令恢复新修改的内容。(可以通过其他办法恢复)

回退参数详解

git rest –soft 只是改变版本头指向,不改变暂存区和工作区。

git rest –mixed 更改指向,改变暂存区,不改变工作区。

git rest –hard 更改指向,该变暂存区,改变工作区。

用reflog挽救错误重置

如果没有记录下重置前master分支指向提交的id,想重置就要通过.git/logs目录下日志文件查看分支变更信息。默认非裸版本库都提供分支日志功能。

$ git config core.logallrefupdates
true

查看master分支日志文件:

$ tail -5 .git/logs/refs/heads/master 
c97b18beff34fe27a2efc62c11cf777b0caae0e5 9b04b5e4db3d7c1b047828af89f7f28f9257434e wangchengwei <wang1100@vip.qq.com> 1511697648 +0800   commit (merge): 顺序表结构
9b04b5e4db3d7c1b047828af89f7f28f9257434e 373358580958c9dd9d1b09877cd4d8b9de47424f wangchengwei <wang1100@vip.qq.com> 1511708562 +0800   commit: 链表
373358580958c9dd9d1b09877cd4d8b9de47424f 0bfd67bac8a3640bcc70041d7540644a1240cf3d wangchengwei <wang1100@vip.qq.com> 1511741360 +0800   commit: 重置test1
0bfd67bac8a3640bcc70041d7540644a1240cf3d ec4dc0fd08a71f57177b298c8347a97ff646f1a7 wangchengwei <wang1100@vip.qq.com> 1511741406 +0800   commit: 重置test2
ec4dc0fd08a71f57177b298c8347a97ff646f1a7 0bfd67bac8a3640bcc70041d7540644a1240cf3d wangchengwei <wang1100@vip.qq.com> 1511741440 +0800   reset: moving to HEAD^

可以看出来master分支指向变迁 git rest –hard 命令后指向的提交id变为0bfd67bac8a3640bcc70041d7540644a1240cf3d

git reflog命令,对这个文件操作。使用show子命令可以显示此文件内容。(正序排列)

$ git reflog show master | head -5
0bfd67b master@{0}: reset: moving to HEAD^
ec4dc0f master@{1}: commit: 重置test2
0bfd67b master@{2}: commit: 重置test1
3733585 master@{3}: commit: 链表
9b04b5e master@{4}: commit (merge): 顺序表结构

重置master为改变之前的值

$ git reset --hard ec4dc0f
HEAD is now at ec4dc0f 重置test2

查看log

git log --oneline

ec4dc0f 重置test2
0bfd67b 重置test1
3733585 链表
9b04b5e 顺序表结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值