恢复几个月前删除的 Git 分支

Recover a Git branch that was deleted months ago

几个月前我删除了一个分支,认为我的项目不再需要它。事实证明,现在,几个月后,它实际上又被需要了。不幸的是我在本地没有...

有什么方法可以恢复吗?

编辑:我在删除分支后克隆了 repo,所以我相信 reflog 帮不了我。

我也试过 "Resurrect" http://repo.or.cz/w/git.git/blob/HEAD:/contrib/git-resurrect.sh,但没有显示分支。

编辑#2:这些都是很好的答案,但我觉得我搞砸了。自从我重新克隆以来,reflog 对我没有任何帮助,它是一个独立的分支,它不在远程服务器上,本地也没有其他人拥有它。

我想我会重写它...

是的,您可以在 git 中恢复已删除的分支。

首先,运行 git reflog 并在已删除分支.

的顶端找到提交的 SHA1

然后 git checkout -b <branchname> <sha> 重新创建分支及其历史记录。

如果出现以下情况之一,您可以恢复分支:

(具体说明是否有,我会相应地更新答案)

  • 如果您已将分支合并到其他分支
  • 您已将其存储在本地存储库中(这意味着在此期间没有 gc 运行)
  • 你在远程服务器上有它
  • 其他人在他的 repo 中有它
  • 您知道要查找哪个文件,这将使我能够解释如何搜索 git blob)

同时看看这里的更多想法:

您可以尝试 git reflog 并找到您已删除的分支的最新提交哈希吗?
获得提交哈希后,执行 git reset --hard <commit>.
这会将 HEAD 恢复到分支上的最新提交。
再次重新创建分支并签出到该新分支 git checkout -b <branchname>
然后推分支,git push origin <branchname>

我在 https://confluence.atlassian.com/stashkb/how-to-restore-a-deleted-branch-744723130.html

的 Atlassian 知识库中找到了这个

希望对您有所帮助