Git:将分叉回购重置为上游回购的当前副本

Git: Reset forked repo to current copy of upstream repo

我对上游存储库的分叉副本进行了一些不需要的更改,并且上游存储库也在那个时候发生了变化。所以我想做的基本上是在不保留任何更改的情况下分叉上游存储库的新副本。

不幸的是,我似乎完全不知道该怎么做。我试过三种方法:

  1. 按照 How do I update a GitHub forked repository? 中的说明进行操作,但 rebase 除外(我不希望重播我自己的提交)。这告诉我我是最新的并且没有进行任何更改,但是我的分叉回购仍然与当前的上游回购不同。

  2. 按照 Reset local repository branch to be just like remote repository HEAD 中的说明进行操作。这适用于文件并更改它们,但是它还假定我现在正在编辑上游存储库。我的分叉副本没有重置。

  3. 按照 http://www.hpique.com/2013/09/updating-a-fork-directly-from-github/ 的说明进行操作,但是当我这样做时我没有得到 'switching the base' 的选项。

我对 GitHub 很陌生,不幸的是,这让一切都变得更加混乱。我想作为最后的手段,我可​​以删除我的分叉回购并重新开始,但如果可能的话我宁愿不这样做。

编辑:在 VonC 的帮助下修复。需要将上游存储库克隆到一个新文件夹作为我的本地副本而不是现有文件夹。

如果您真的想放弃您的更改,并将所有内容重置为上游(原始)存储库状态,您可以:

  • git 克隆原始 repo(不是你的 fork)

  • 将远程源重命名为上游

      git remote rename origin upstream
    
  • 用你的叉子的 url 添加来源:

      git remote add origin https://github.com/<you>/<yourFork>
    
  • push/reset 你分叉的所有分支:

      git push origin --force --all
    

(参见 the discussion for an illustration of those commands