3

好的,所以我在 GitHub 上有一个 fork 的 repo,并且上游 repo 自从我 fork 以来还没有更新。昨天,我从几个月前 fork 回购之前所做的最后一次上游提交创建了一个分支。

我在分支上做了一个错误的提交,所以我试图通过git push -f origin HEAD^:master在我的本地分支实例上使用来撤消它,但是正如你所看到的,我忘记更改master为分支的名称。所以它最终覆盖了我迄今为止在主人身上所做的一切。

我的问题是,有没有办法消除这个混乱,这样我就可以让主人回到这个特殊推动之前的状态?

我经常使用 TortoiseGit 和 TortoiseSVN,在 Git 的任何组件中我都看不到我之前在 master 上所做的任何事情的剩余部分,但是我仍然可以在 SVN 主干的历史日志中看到我之前的所有提交。在以前的状态下,我没有干净的 master 本地实例。

我试过类似git reset --hard <last good commit hash>or的东西git push -f origin <last good commit hash>:master,但它说不存在这种哈希的提交。我仍然可以从浏览器历史记录中访问 GitHub 上的所有先前提交。

下游没有任何东西,所以不用担心。

有小费吗?

4

2 回答 2

7

好的,这是我从分支的本地实例中修复它的方法:

  1. git log --graph --oneline --all   检索最后一个好的提交的哈希
  2. git reset --hard <last good commit hash>
  3. git push origin +master
于 2013-06-07T03:12:32.090 回答
0

试一试git reflog。它会记住旧的提交哈希,如果您没有执行git gc.

于 2013-06-07T01:31:54.887 回答