如何恢复已删除的远程分支

Foo*_*ook 4 git github

我们的远程主分支被删除了。我有一个主存储库的本地副本,但它已经过时了一些版本。我可以通过将最后一个已知的提交哈希插入 URL 来查看 github 中的分支,但未能成功恢复它。我已经尝试了几个步骤来恢复它:

git reset --hard 16deddc05cb53dfaa2d198b1cf264416e19255e9
fatal: Could not parse object '16deddc05cb53dfaa2d198b1cf264416e19255e9'

git checkout 16deddc05cb53dfaa2d198b1cf264416e19255e9
fatal: reference is not a tree: 16deddc05cb53dfaa2d198b1cf264416e19255e9
Run Code Online (Sandbox Code Playgroud)

可以理解,因为主人不再存在。我有哪些选择可以在这里恢复?

kos*_*tix 6

  1. 获取确切的提交(及其历史记录中的所有内容):

    git fetch origin 16deddc05cb53dfaa2d198b1cf264416e19255e9
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从中创建一个分支:

    git branch xyzzy FETCH_HEAD
    
    Run Code Online (Sandbox Code Playgroud)

您可以将其合并为一个步骤:

git fetch 16deddc05cb53dfaa2d198b1cf264416e19255e9:refs/heads/xyzzy
Run Code Online (Sandbox Code Playgroud)

  • 惊人的!这对于我不小心删除的远程分支来说完美无缺。谢谢。 (2认同)

mkr*_*fky 5

如果您不知道最新版本的哈希值,您可能无法恢复它。也许您能做的最好的事情就是将您拥有的主分支推送到 github。由于修订已经在存储库中,这将是一个快速的网络操作。

如果您对托管您的存储库的机器具有 ssh 访问权限(在 github 上您没有),那么您可以在 git 存储库中搜索孤儿。孤儿是不再有引用的提交。不幸的是,在这种情况下这对您没有帮助。

有一些提示可以帮助您恢复丢失的提交,包括在这篇文章中寻找孤儿的过程:

Git:恢复已删除的(远程)分支