Github Fork PR被拒絕,該如何重置(回復)到對方的專案?(重新Fork)詳細教學

最近 Fork了一個專案,修改之後發了數個 PR(Pull requests),想要讓原作者把我的修改納入他的專案中,但是其中一個PR被拒絕,於是遇到了這個狀況題:
「我 Fork的專案很亂,有被拒絕的 PR的 Commit,又有原作最新的更新,兩個又被系統自動 Merge,我想把Fork的專案直接還原成原作的樣子,該怎麼做?」

有兩個方法,最簡單就是到 Github,把 Fork後出現在自己 Repositories內的那個專案刪掉,然後重新再 Fork一次,因為名稱一樣,所以IDE可以直接拉然後直接切到最新就可以了

但,上述做法會有一個問題,如果你之前發PR被接受,那其他人在瀏覽你的 Github個人頁面時,會看到你先是發了PR被接受,然後才是你建了這個儲存庫,就很其怪,「還沒有儲存庫就可以提交修改?」你來自未來?

其實如果有這樣做過一次,下次看到別人也是「先 PR再 Create repository」就會知道他是用上面那種方式還原的

下面就來示範使用 Git指令操作,時間軸不會出「現來自未來」的錯誤

開啟指令視窗,先切換到你專案目錄下
增加原始來源 (你fork的那個專案) 
註:在原始專案上點選 Code> SSH,就會看到下列使用 git@github.com:開頭的專案地址
git remote add upstream git@github.com:ruyut/ruyut.git

將原始專案直接拉到一個新的 upstream 分支
git fetch upstream

將專案切到主分支(或是任何你有變更的分支)
git checkout master

使用原始專案替換當前分支
git reset --hard upstream/master

將此變更強制推送到 Github
git push origin master -f

到這裡應該就結束了,但是如果你有變更到其他分支,例如 develop, hotfix等等的分支,就從上面的「將專案切到主分支」再做一次,只是就不是 master,而是你的那個分支名稱

完整指令:

資料來源:glennblock

留言