使用git reflog找回误操作导致的丢失代码

当未push的本地代码被git reset删除时,git pull无法恢复。但通过git reflog,可以查看所有操作历史,包括commit和reset。通过找到丢失的提交ID,使用git reset --hard或git checkout,能找回丢失的代码,或将恢复的内容放到新的分支。

如果在本地做了一些修改,并且没有push到远程代码库,然后你做了git reset操作把修改删除了,这时候使用git
pull拿不回来,使用git log也查看不到修改记录,看起来没有后悔药吃了,别慌,还有git
reflog,他可以查看你做的任何操作记录,比如checkout、reset、pull等。

  • 首先新增一个文件或者做一些修改,并且提交到本地库
$ git add .
$ git commit -m "add a.java"

现在看git的历史记录,你可以看到这次提交记录:

$ git log --oneline
1cb10d0 (HEAD -> master) add a.java
4429f26 init
  • 现在使用reset将代码回滚到init这一个版本:
$ git reset --hard 4429f26
HEAD is now at 4429f26 init
$ git log --oneline
4429f26 (HEAD -> master) init
$ git reflog
4429f26 (HEAD -> master) HEAD@{0}: reset: moving to 4429f26
1cb10d0 HEAD@{1}: commit: add a.java
4429f26 (HEAD -> master) HEAD@{2}: commit (initial): init

使用git log我们找不到add a.java这次提交记录,但是使用git reflog我们可以看到我们刚才做的commit和reset操作。
所以,我们要找回add a.java这次记录,只需要做如下操作:

$ git reset --hard 1cb10d0

也可以将恢复的结果放到另一分支

$ git checkout -b ajava 1cb10d0
Switched to a new branch 'ajava'
  • 再来看一下 git 记录:
$ git log --oneline
1cb10d0 (HEAD -> ajava) add a.java
4429f26 (master) init
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值