代码之家  ›  专栏  ›  技术社区  ›  Dan Breen

已中止旧的git-rebase,并且在重新base启动后丢失了提交

  •  59
  • Dan Breen  · 技术社区  · 16 年前

    废话!大约一周前,我在清理我的存储库时重新调整了一些提交,显然我没有真正完成它。今天,一周又几次提交之后,我去Rebase重新排序一些提交,从今天开始,它告诉我我已经在一个Rebase中间了。

    为了以防万一,这应该是复制我的回购协议的提示。但我没有……相反,我跑了 git rebase --abort 当时听起来不错。嗯,那是不对的。它从一周前中止了钢筋网,并将大师的头重置为旧的头。笨蛋!

    我有几个其他的分支是最近的,我已经推到了遥远的几次,但最近的变化似乎永远消失了。我没有足够的功夫来判断是否有办法恢复我的变化。

    我搞砸了吗?

    编辑 哇!谢谢大家! git reflog 真棒!我完全康复了…吸取了教训。将tchalwak的回答标记为“第一个发布”。

    2 回复  |  直到 12 年前
        1
  •  93
  •   Kzqai    12 年前

    检查 git reflog . 在几乎所有情况下,您都可以使用这些提交散列作为引用进行回溯。

    我还将把git repo目录物理复制到其他地方,作为一个进行初步测试的地方,看看有什么效果,这样你就可以处理任何你想要的东西,而不会丢失未跟踪的文件或使事情进入一个你 不能 从这里回来。

        2
  •  63
  •   Community Mohan Dere    9 年前

    您应该能够使用 git reflog .

    然后您可以将当前分支重置为那些sha1

    # Suppose the old commit was HEAD@{2} in the ref log
    git reset --hard HEAD@{2}
    

    有点像” Undoing a git reset --hard HEAD~1 “。

    也见“ illustrated guide to recovering lost commits with Git “,用于恢复的其他示例。