如何撤消分支推送到主控

时间:2013-06-07 01:22:26

标签: git github git-svn git-push git-reset

好的,所以我在GitHub上有一个fork for repo,而且我分叉后它的上游repo还没有更新。昨天,我创建了一个基于最后一次上游提交的分支,这是在我几个月前分配回购之前制作的。

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

我的问题是,有没有办法解决这个混乱,所以我可以让主人回到这个特定推动之前的状态?

我经常使用TortoiseGit和TortoiseSVN,在Git的任何组件之前我都看不到我在主服务器上做过的任何事情,但是我仍然可以在SVN trunk的历史日志中看到我之前的所有提交。我之前没有一个干净的本地主实例。

我尝试了git reset --hard <last good commit hash>git push -f origin <last good commit hash>:master之类的内容,但它表示不存在使用此类哈希的提交。我仍然可以从浏览器历史记录访​​问GitHub上的所有先前提交。

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

任何提示?

2 个答案:

答案 0 :(得分:6)

好的,这是我如何从分支的本地实例修复它:

  1. git log --graph --oneline --all检索最后一个好提交的哈希
  2. git reset --hard <last good commit hash>
  3. git push origin +master

答案 1 :(得分:0)

尝试git reflog。它会记住如果你没有完成git gc,可能会丢失旧的提交哈希值。