【问题标题】:Recover a Git branch that was deleted months ago恢复几个月前删除的 Git 分支
【发布时间】:2016-03-03 17:23:20
【问题描述】:

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

有什么办法可以恢复吗?

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

我还尝试了“复活”http://repo.or.cz/w/git.git/blob/HEAD:/contrib/git-resurrect.sh,它没有向我显示分支。

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

我想我会重写它...

【问题讨论】:

标签: git branch restore


【解决方案1】:

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

(如果有,请指定并相应地更新答案)

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

同时查看这里以获取更多想法: How to move HEAD back to a previous location? (Detached head)

【讨论】:

    【解决方案2】:

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

    首先,运行 git reflog 并在已删除分支的顶端找到提交的 SHA1

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

    【讨论】:

    • 90 天可以在这里发挥作用。我建议在示例中添加 grep 和分支名称。
    • 一旦 gc 被执行或者如果他再次克隆了 repo,Reflog 将无济于事。 GC 运行的默认值通常是 90 天。
    【解决方案3】:

    您可以尝试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 知识库中找到了这个

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2019-08-08
      • 2011-07-29
      • 2015-11-06
      • 2015-09-09
      • 1970-01-01
      相关资源
      最近更新 更多