可以恢复被删除的分支吗,答案是肯定的,否则Git就有点弱了。
首先看一下当前项目的分支,代码如下:[Shell] 纯文本查看 $ git branch
代码运行效果截图如下:
![]()
有两个分支,下面切换到master执行对newBr分支的删除操作。
特别说明:不能够在当前分支删除分支本身。[Shell] 纯文本查看 $ git branch -d newBr
代码执行效果截图如下:
![]()
Git非常贴心,newBr没有合并都会报错,如果确实不想合并,可以强行删除:[Shell] 纯文本查看 $ git branch -D newBr
代码执行效果截图如下:
![]()
分支已经被成功删除掉,记住被删除分支所指向commit对象的sha-1值(a12b74f)。
一.恢复操作:
非常的简单,只要以a12b74f对象为基础再创建一个分支即可:[Shell] 纯文本查看 $ git branch newBr a12b74f
再看项目有哪些分支:[Shell] 纯文本查看 $ git branch
代码执行效果截图如下:
![]()
原来的分支又回来了,当然这个分支也可以用其他名字命名:[Shell] 纯文本查看 $ git branch ant a12b74f
如果忘记了commit对象的sha-1值,可以通过git reflog命令找回。
二.可以恢复的原因:
删除分支的本质,其实是删除了.git/refs/heads/目录下的一个与分支同名文件,文件内容是一个分支所指向commit对象的sha-1值。也就是说真正删除的并不是commit对象本身,更为形象的说就是揭掉贴在commit对象上的标签,当然我们可以再贴上一个标签。
更多内容可以参阅Git branch分支实质一章节。