【聲明:】本文是作者(蘑菇v5)原創(chuàng),版權(quán)歸作者 蘑菇v5所有,侵權(quán)必究。本文首發(fā)在簡(jiǎn)書(shū)。如若轉(zhuǎn)發(fā),請(qǐng)注明作者和來(lái)源地址!未經(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副本中的代碼改變了,而作者變更的代碼沒(méi)有同步下來(lái),這時(shí)你需要合并原作者的最新代碼過(guò)來(lái), 讓你的項(xiàng)目變成最新的。
一般有兩種做法,第一種做法可謂簡(jiǎn)單粗暴,但卻不是最好的做法,說(shuō)明如下:
- 第一種:將自己倉(cāng)庫(kù)中原來(lái)fork的項(xiàng)目刪掉 (delete deletethis repository),然后在重新到原作者倉(cāng)庫(kù)中(fork)一份最新代碼(不推薦方式),這似乎達(dá)到了我們的最終目的,但是自己改變的代碼沒(méi)合并進(jìn)來(lái)。
- 第二種:在本地建立兩個(gè)庫(kù)的中介,把兩個(gè)遠(yuǎn)程庫(kù)都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)入倉(cāng)庫(kù)(這里我直接進(jìn)入項(xiàng)目根目錄下),執(zhí)行命令:
$ git remote -v
可以在cad控制臺(tái)查看本地項(xiàng)目目錄,如下:

圖1.png
(3)我們可以看到,只有我們自己的遠(yuǎn)程倉(cāng)庫(kù),下面clone原項(xiàng)目到該倉(cāng)庫(kù)
$ git remote add hunter https://github.com/huntermr/FastAndroid.git
$ git remote -v
hunter 相當(dāng)于一個(gè)別名,名字隨便取。

圖2.png
(4)這時(shí)有兩個(gè)遠(yuǎn)程分支,我們繼續(xù) fetch,然后把原項(xiàng)目更新的內(nèi)容fetch到本地
$ git fetch hunter
(5)查看下分支:
$ git branch -av

圖3.png
(6)一個(gè)本地分支master,三個(gè)遠(yuǎn)程分支,畫(huà)紅線的就是要合并的 merge
$ git checkout master
$ git merge hunter/master

圖4.png
(7)如果有沖突的話,需要丟掉本地分支:
$ git reset –hard hunter/master
(8)這時(shí)你的當(dāng)前本地的項(xiàng)目變成和原作者的主項(xiàng)目一樣了,可以把它提交到你的GitHub庫(kù)
$ git commit -am ‘更新到原作者的主分支’
$ git push origin
$ git push -u origin master -f –強(qiáng)制提交