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

时间:2015-11-11 17:52:28

标签: git github

我们的远程主分支已被删除。我有一份主回购的本地副本,但有几个转速已经过时了。我能够通过将最后一个已知的提交哈希插入到URL中来查看github中的分支,但是在恢复它时却没有成功。我已经尝试了几个步骤来恢复它:

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

git checkout 16deddc05cb53dfaa2d198b1cf264416e19255e9
fatal: reference is not a tree: 16deddc05cb53dfaa2d198b1cf264416e19255e9

可以理解,因为master不再存在。我有什么选择在这里恢复?

3 个答案:

答案 0 :(得分:4)

如果您不知道最新版本的哈希,那么恢复它可能会失败。也许您可以做的最好的事情就是将您备份的主分支推送到github。由于修订已经在存储库中,因此它将是一个快速的网络操作。

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

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

Git: Recover deleted (remote) branch

答案 1 :(得分:3)

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

    git fetch origin 16deddc05cb53dfaa2d198b1cf264416e19255e9
    
  2. 从中创建一个分支:

    git branch xyzzy FETCH_HEAD
    
  3. 您可以将其合并为一个步骤:

    git fetch 16deddc05cb53dfaa2d198b1cf264416e19255e9:refs/heads/xyzzy
    

答案 2 :(得分:2)

如果 知道最新丢失提交的哈希值,请尝试使用github的Web UI解决问题。转到以下URL:

https://github.com/{username}/{repository}/compare/{hash}

应显示一个按钮,Create pull request - 使用此按钮创建拉取请求并将历史记录合并回分支。

相关问题