【聲明:】本文是作者(蘑菇v5)原創(chuàng)僻焚,版權(quán)歸作者 蘑菇v5所有允悦,侵權(quán)必究。本文首發(fā)在簡書虑啤。如若轉(zhuǎn)發(fā)隙弛,請注明作者和來源地址!未經(jīng)授權(quán)狞山,嚴(yán)禁私自轉(zhuǎn)載全闷!
在GitHub上我們會(huì)去fork別人的一個(gè)項(xiàng)目,然后在自己的GitHub中會(huì)生成一個(gè)副本铣墨,自己將副本clone到電腦本地上可以修改代碼室埋,修改之后push提交到遠(yuǎn)端remote中的origin,發(fā)現(xiàn)自己的GIthub副本中的代碼改變了伊约,而作者變更的代碼沒有同步下來姚淆,這時(shí)你需要合并原作者的最新代碼過來, 讓你的項(xiàng)目變成最新的屡律。
一般有兩種做法腌逢,第一種做法可謂簡單粗暴,但卻不是最好的做法超埋,說明如下:
- 第一種:將自己倉庫中原來fork的項(xiàng)目刪掉 (delete deletethis repository)搏讶,然后在重新到原作者倉庫中(fork)一份最新代碼(不推薦方式),這似乎達(dá)到了我們的最終目的霍殴,但是自己改變的代碼沒合并進(jìn)來媒惕。
- 第二種:在本地建立兩個(gè)庫的中介,把兩個(gè)遠(yuǎn)程庫都clone到本地来庭,然后拉取原項(xiàng)目更新到本地妒蔚,合并更新,最后push到你的github就完成。(推薦方式)
具體實(shí)現(xiàn):
(1)準(zhǔn)備一個(gè)本地目錄肴盏,并克隆自己fork的項(xiàng)目到本地科盛。
$ git clone https://github.com/jp1017/FastAndroid.git
(2)然后cd 進(jìn)入倉庫(這里我直接進(jìn)入項(xiàng)目根目錄下),執(zhí)行命令:
$ git remote -v
可以在cad控制臺(tái)查看本地項(xiàng)目目錄菜皂,如下:
(3)我們可以看到贞绵,只有我們自己的遠(yuǎn)程倉庫,下面clone原項(xiàng)目到該倉庫
$ git remote add hunter https://github.com/huntermr/FastAndroid.git
$ git remote -v
hunter 相當(dāng)于一個(gè)別名恍飘,名字隨便取榨崩。
(4)這時(shí)有兩個(gè)遠(yuǎn)程分支,我們繼續(xù) fetch常侣,然后把原項(xiàng)目更新的內(nèi)容fetch到本地
$ git fetch hunter
(5)查看下分支:
$ git branch -av
(6)一個(gè)本地分支master蜡饵,三個(gè)遠(yuǎn)程分支,畫紅線的就是要合并的 merge
$ git checkout master
$ git merge hunter/master
(7)如果有沖突的話胳施,需要丟掉本地分支:
$ git reset –hard hunter/master
(8)這時(shí)你的當(dāng)前本地的項(xiàng)目變成和原作者的主項(xiàng)目一樣了,可以把它提交到你的GitHub庫
$ git commit -am ‘更新到原作者的主分支’
$ git push origin
$ git push -u origin master -f –強(qiáng)制提交