如何恢复被删除的git分支

Hi,你好,我是猿java。

今天,公司有个小伙伴不小心误删了辛辛苦苦开发了一周的git branch,如果要重写代码,那简直要疯了,有没有什么好办法可以恢复呢? 今天我们就来聊一聊。

相信直觉

首先,你要相信 git是个很强大的项目管理,如果没有恢复的方法,那么它就配不上你这么优秀的程序员。好了,废话不多说,直接上干货。这里以恢复误删的分支“SCEM-3414”为例。

查看git操作历史

git操作的所有历史都是有章可查的,指令是:

1
2
3
4
5
# 首先,切换到你的工程根目录下
cd project_root_path

# git reflog 记录了每一次命令,--date=iso 表示以标准时间显示
git reflog show --date=iso

如下图,提交历史信息里面包含了 commitId,HEAD, comment等信息,可以根据comment信息找到对应的commitId:
img.png

额外说明:

1
2
# git log 也可以查看提交历史,但是不会显示被删除的分支
git log

查看 commitId

找到commitId之后,可以查看该 commitId对应的详情,再次确认下是不是被误删的分支,指令是:

1
2
# 这里的 commitId 需要替换成上一步中找到的 commitId
git show commitId

如下图,可以查看详情再次确认该commitId是否是被误删的:
img.png

根据 commitId 恢复分支

确认好commitId对应的内容就是需要恢复的分支,那么就可以根据commitId恢复分支了,指令是:

1
2
# branch-name 是指需要恢复的分支名,可以自己定义,这里以SCEM-3414为例
git checkout -b branch-name commitId

如下图,执行指令后,就可以看到分支已经恢复了:

img.png

好了,到此,简单的几步就可以把误删的分支恢复了,是不是很简单呢?

掌握科学的方式,才可以事半功倍!

总结

本文通过恢复一个被误删的分支,讲解了git操作历史的查看,commitId的查看,以及根据commitId恢复分支的方法。

git是日常开发中必不可少的工具,掌握好git的使用,可以事半功倍。强烈推荐花时间研究git的实现原理,这样在多个分支的冲突解决合并中,才能游刃有余。

交流学习

最后,把猿哥的座右铭送给你:投资自己才是最大的财富。 如果你觉得文章有帮助,请帮忙转发给更多的好友,或关注公众号:猿java,持续输出硬核文章。

drawing