[git] git reset --hard后恢复操作

看到这个标题,你以为能恢复??
。。。转载过来以为是能挽救git reset –hard的神技,然而不是。。。
看到这篇的同学可以有个心理安慰了,这边还有没提交修改就rest,想撞墙的想剁手的。。。
划重点,使用git reset –hard(此参数有毒)之前一定要git commit 或者 git add 或者 git stash或者。。。
假如你这些操作都没有执行的话,博主还有一个找了多年的方法能挽救。。。
那是一个风雨交加的夜晚,博主头顶十米长的避雷针,一声惊雷下来,哇咔咔!博主穿越到还没rest之前的时空!!哈哈哈哈天无绝人之路啊!!!
《转》Git 撤销commit的注意事项 http://www.cnblogs.com/scodong/p/4757378.html
Git撤销commit的操作命令 git reset –hard HEAD^

一、新建三个文件,demo1,demo2,demo3
这里写图片描述

二、git add 命令提交到暂存区,git reset HEAD demo1就是把提交到暂存区里的文件撤销。
这里写图片描述

上图中,执行git reset HEAD demo1就会把demo1从暂存区中撤销,现在是untracked.

三、git commit 提交本地仓库
这里写图片描述

上图中显示,git commit把demo2,demo3提交到本地仓库中。

四、现在想撤销之前的commit,可以用git reset –hard HEAD^命令
这里写图片描述

第三步中,先commit demo2,再commit demo3,因此现在的HEAD即是demo3的commit值。

(HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以写成HEAD~2 ,依次类推)

因此git reset –hard HEAD 就是把最新提交的demo3撤销掉,撤销是非常彻底的,本地文件也会删除。—–特么说这么多,你到是把这句放在最上面啊

<转>恢复 git reset -hard 的误操作 ——这是有commit操作的,之前要有这操作,我还来百度?
此部分内容转自:https://www.cnblogs.com/mliudong/archive/2013/04/08/3007303.html

有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。

不久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操作。

让我们来看一些例子:

gitinitgitinit touch foo.txt
gitaddfoo.txtgitaddfoo.txt git commit -m “initial commit”

echo‘newdata′>>foo.txtecho‘newdata′>>foo.txt git commit -a -m “more stuff added to foo”

你现在看git的历史记录,你可以看到两次提交:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit

现在让我们来重置回第一次提交的状态:
gitreset–hardb7057a9gitreset–hardb7057a9 git log
* b7057a9 (HEAD, master) initial commit

这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。

$ git reflog
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit

所以,我们要找回我们第二commit,只需要做如下操作:
$ git reset –hard 98abc5a

再来看一下 git 记录:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit

所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后

转:https://mp.csdn.net/console/editor/html/105161207
—–这个哥们还是靠点谱,有add 操作后的恢复。

好了避雷针可以先去某宝定制了,10米以上包邮。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值