GIT 如何恢复在没合并之前就删除的分支(detached HEAD)

今天在一个分支上进行开发,费尽千辛万苦终于把功能实现了!!想着放下键盘去喝口水,但是等我水喝完回来,看到产品经理在操作我的电脑,这老哥居然一顿失误操作给我把刚刚开发完功能的分支删了!!我靠,我还没合并分支呢,给我把分支删了????极其不讲武德,好在我把 GIT 玩得六,把分支给恢复回来了,不然这不是又要加班的节奏吗!!接下来就讨论一下怎么恢复没合并且被删除的分支。


假设我当前 GIT 仓库的状态如下:
在这里插入图片描述
只有一个 master 分支,接下来我们创建并切换 dev 分支,并且在这个分支上进行开发然后提交:
在这里插入图片描述
这时候我们 GIT 仓库的状态如下:
在这里插入图片描述
OK 接下来我要模拟产品老哥的操作了,大家都让让!!!!
在这里插入图片描述
我靠,这老哥是真牛,第一下用 -d 选项被阻止了,他还给我强行删掉了,什么仇什么怨啊!还好我技术功底扎实,给老哥秀了一顿操作,把分支给救回来了。

1、首先,用命令 git reflog 来查看之前操作的历史记录:
在这里插入图片描述
注意,这时候如果我们直接用 git log 是看不到任何关于 dev 分支的信息的,但是通过 git reflog 可以看到我们在 dev 分支上提交时候的 commit 对象的 hash 值。

2、然后,用命令 git checkout 5fdaaf7 将 HEAD 指针指向对应的提交记录:
在这里插入图片描述
这是一种称为 detached HEAD 的操作,因为一般来说 HEAD 会指向某个分支,但是这种操作使得 HEAD 直接指向了某次 commit 。通过 git log,我们也可以看到当前跟 dev 相关的提交记录又出现了。

3、最后,在当前 HEAD 所在位置创建并切换分支 dev,则恢复了我们之前 dev 分支的状态:
在这里插入图片描述
大功告成!!!分支回来了,以前提交的记录都还在!!非常 nice,不同加班了!!

通过上述的操作我们可以知道,即使我们用命令 git branch -D 删除一个分支,也仅仅是删除了一个分支指针而已,在分支下的提交记录其实是不会被删除的,仍然是可恢复的!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值