fork別人的項(xiàng)目保持與源項(xiàng)目同步更新的兩種方式
一、需求場(chǎng)景
我們經(jīng)常使用別人的一些開源項(xiàng)目,并在此基礎(chǔ)上進(jìn)行自己的進(jìn)一步開發(fā)。常用的就是fork別人的代碼到本地,然后繼續(xù)開發(fā)后再提交到自己的git倉(cāng)庫(kù)中。這樣就會(huì)產(chǎn)生一個(gè)問題,就是別人的代碼更新后,我們無法同步更新被人的代碼。本文主要用兩種方式來保證自己本地的代碼和別人的代碼同步。
二、解決方案
1. 使用git的upstream方式
此處我們以在Github上開源的microsoft/terminal 這個(gè)項(xiàng)目為例進(jìn)行實(shí)操
> 1. 打開該項(xiàng)目在Github上的地址
microsoft/terminal
> 2. 登錄自己的Github賬號(hào)
> 3. 點(diǎn)擊fork, fork該項(xiàng)目到個(gè)人的倉(cāng)庫(kù)中

> 4. fork成功后跳轉(zhuǎn)到個(gè)人倉(cāng)庫(kù)中,可以看到如圖紅色標(biāo)注所示,表明該項(xiàng)目是自己fork而來

> 5. 克隆該項(xiàng)目到本地pc,然后打開該項(xiàng)目

> 6. 此處為了方便大家參考,接下來的操作我們直接使用git命令
使用git 命令查看當(dāng)前的remote信息
git remote -v

> 7. 關(guān)鍵的操作來了,接下來我們添加源碼的原倉(cāng)庫(kù),作為我們本git倉(cāng)庫(kù)的上游,
git remote add upstream https://github.com/microsoft/terminal.git
> 8. 添加完成后再次查看remote 信息,會(huì)顯示如下:

> 9. 獲取源倉(cāng)庫(kù)的最新代碼

> 10. 例如源代碼的master分支有更新,我們要合并到我們本地的代碼分支上只需要執(zhí)行如下操作
git merge upstream/master
> 11. 執(zhí)行完成后,就會(huì)發(fā)現(xiàn)本地代碼已經(jīng)更新到最新,如果有沖突需要我們解決沖突,解決完成后,執(zhí)行
git push origin
> 12. 每次源代碼有更新都只需要重復(fù)第7--11步即可。
2. 使用git的分支方式來解決
> 1. 前面的步驟都參考第一種方式1-6步
> 2. 我們添加遠(yuǎn)程分支的模式來進(jìn)行代碼的合并,
git remote add microsoft https://github.com/microsoft/terminal.git?

> 3. 上述操作中的分支別名mircosoft可以隨便去,易于辨識(shí)即可
> 4. fetch分支代碼,并進(jìn)行合并
git fetch microsoft
git merge microsoft/master

> 5. 執(zhí)行完成后,就會(huì)發(fā)現(xiàn)本地代碼已經(jīng)更新到最新,如果有沖突需要我們解決沖突,解決完成后,執(zhí)行
git push origin
每次源代碼有更新都只需要重復(fù)第4步即可。
三、總結(jié)
git 畢竟出自大師之手,我們開發(fā)過程中遇到的常見場(chǎng)景和痛點(diǎn),他基本都考慮到了,有啥問題仔細(xì)閱讀官方文檔,絕對(duì)有意想不到的驚喜。既然選擇了Git這個(gè)神器,就要用“偷懶”的思維去思考開發(fā)和團(tuán)隊(duì)協(xié)作過程中遇到的問題。尋求最高效,可靠的解決方案。