首页 > 解决方案 > 多次硬重置后恢复提交?

问题描述

我有一个分支,它从 master 的许多提交中进行了很多更改。几周前它合并了 master 并且它自动合并并且看起来很好。

今天把master合并进去了,因为master里面有一个很大的更新,所以我有很多冲突。我经历并(认为)我成功地修复了冲突,有很多错误,似乎自动合并没有按计划进行。我重置回我认为在此合并之前的哈希,然后强制将其推送到原点,希望我能够再试一次并更有条理地做。

但是,现在查看我的本地和远程分支,我找不到该分支中的任何提交。我正在使用 Bitbucket,但我并不像使用 Github 那样精通搜索提交,但我也一直在使用,但gitk没有git log --oneline --graph --decorate成功找到任何东西。

我恢复到在我的笔记本电脑上查看已过时但在相关分支上有提交的 repo 副本。我能够通过 Bitbucket 上的哈希搜索它,发现提交在那里,但似乎不在仓库中。

如果它无法挽救(我希望并怀疑),我唯一的选择是从我笔记本电脑上的过时版本开始,找出缺少的内容并从那里开始。

我对自己取得的成就感到非常困惑,不想让情况变得更糟,很高兴提供更多信息。

标签: gitbitbucket

解决方案


解决方案比我预期的要简单得多。

  1. git reflog | grep '{name of branch}'
  2. 查找导致问题的提交并复制该HEAD提交之前的哈希。(例如我的是checkout: moving from master to {name of branch}
  3. git reset {commit hash} --hard

然后因为我也想修复我的远程分支,所以我做了git push -f.


推荐阅读