2015-10-14 82 views
1

我對上游回購的分叉副本進行了一些不需要的更改,並且上游回購在此期間也發生了變化。所以我想要做的就是基本上分出上游回購的新副本而不保留任何更改。Git:將分叉回購重置爲上游回購的當前副本

不幸的是,我似乎無法弄清楚如何做到這一點。我已經嘗試了三種方法:

  1. 按照除底墊在How do I update a GitHub forked repository?的說明(我不想重播我自己提交)。這告訴我我是最新的並且沒有任何更改,但是我的分揀回購仍然不同於當前的上游回購。

  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/的說明,但是我不明白的「切換基地」當我這樣做的選項。

不幸的是,我對GitHub很陌生,這使得一切都變得更加令人困惑。我想作爲最後的手段,我可​​以刪除我的分叉回購,並重新開始,但我寧願不這樣做,如果可能的話。

編輯:修正了VonC的幫助。需要克隆上游回購到一個新的文件夾作爲我的本地副本,而不是現有的文件夾。

回答

3

如果你真的想放棄更改,並重置一切向上游(原件)回購的狀態,你可以:

  • 混帳克隆原來的回購協議(而不是叉)
  • 重命名遠程起源上游

    git remote rename origin upstream 
    
  • 添加起源與前叉的網址:

    git remote add origin https://github.com/<you>/<yourFork> 
    
  • 推/各分支機構重置您的叉:

    git push origin --force --all 
    

(見the discussion for an illustration of those commands

+0

感謝@VonC但由於某種原因,它似乎並沒有解決問題.. 。它說「一切都是最新的」,但是當我在github.com上查看我的回購時,沒有發生任何變化,它仍然表示「此分支在之前提交了7次」。我想我根據說明做了一切事情,除了我已經有一個遠程上游的事實,所以我不得不將其刪除。我將附上我的命令行日誌的截圖,以便您可以查看我是否做錯了任何事情,如果您不介意的話。 – misaochan

+0

@melange權利:這是因爲分支配置仍然說:'branch.xxx.remote upstream'。在每個'branch.xxx.remote'行的'.git/config'中用'origin'替換'upstream',然後再次嘗試'git push --force --all'。 – VonC

+0

VonC,你的意思是編輯我的.git目錄中配置文件中的上游URL,對吧? – misaochan