【聲明:】本文是作者(蘑菇v5)原創,版權歸作者 蘑菇v5所有,侵權必究。本文首發在簡書。如若轉發,請注明作者和來源地址!未經授權,嚴禁私自轉載!
在GitHub上我們會去fork別人的一個項目,然后在自己的GitHub中會生成一個副本,自己將副本clone到電腦本地上可以修改代碼,修改之后push提交到遠端remote中的origin,發現自己的GIthub副本中的代碼改變了,而作者變更的代碼沒有同步下來,這時你需要合并原作者的最新代碼過來, 讓你的項目變成最新的。
一般有兩種做法,第一種做法可謂簡單粗暴,但卻不是最好的做法,說明如下:
- 第一種:將自己倉庫中原來fork的項目刪掉 (delete deletethis repository),然后在重新到原作者倉庫中(fork)一份最新代碼(不推薦方式),這似乎達到了我們的最終目的,但是自己改變的代碼沒合并進來。
- 第二種:在本地建立兩個庫的中介,把兩個遠程庫都clone到本地,然后拉取原項目更新到本地,合并更新,最后push到你的github就完成。(推薦方式)
具體實現:
(1)準備一個本地目錄,并克隆自己fork的項目到本地。
$ git clone https://github.com/jp1017/FastAndroid.git
(2)然后cd 進入倉庫(這里我直接進入項目根目錄下),執行命令:
$ git remote -v
可以在cad控制臺查看本地項目目錄,如下:
圖1.png
(3)我們可以看到,只有我們自己的遠程倉庫,下面clone原項目到該倉庫
$ git remote add hunter https://github.com/huntermr/FastAndroid.git
$ git remote -v
hunter 相當于一個別名,名字隨便取。
圖2.png
(4)這時有兩個遠程分支,我們繼續 fetch,然后把原項目更新的內容fetch到本地
$ git fetch hunter
(5)查看下分支:
$ git branch -av
圖3.png
(6)一個本地分支master,三個遠程分支,畫紅線的就是要合并的 merge
$ git checkout master
$ git merge hunter/master
圖4.png
(7)如果有沖突的話,需要丟掉本地分支:
$ git reset –hard hunter/master
(8)這時你的當前本地的項目變成和原作者的主項目一樣了,可以把它提交到你的GitHub庫
$ git commit -am ‘更新到原作者的主分支’
$ git push origin
$ git push -u origin master -f –強制提交