fork別人的項目保持與源項目同步更新的兩種方式
一、需求場景
我們經常使用別人的一些開源項目,并在此基礎上進行自己的進一步開發。常用的就是fork別人的代碼到本地,然后繼續開發后再提交到自己的git倉庫中。這樣就會產生一個問題,就是別人的代碼更新后,我們無法同步更新被人的代碼。本文主要用兩種方式來保證自己本地的代碼和別人的代碼同步。
二、解決方案
1. 使用git的upstream方式
此處我們以在Github上開源的microsoft/terminal 這個項目為例進行實操
> 1. 打開該項目在Github上的地址
microsoft/terminal
> 2. 登錄自己的Github賬號
> 3. 點擊fork, fork該項目到個人的倉庫中
> 4. fork成功后跳轉到個人倉庫中,可以看到如圖紅色標注所示,表明該項目是自己fork而來
> 5. 克隆該項目到本地pc,然后打開該項目
> 6. 此處為了方便大家參考,接下來的操作我們直接使用git命令
使用git 命令查看當前的remote信息
git remote -v
> 7. 關鍵的操作來了,接下來我們添加源碼的原倉庫,作為我們本git倉庫的上游,
git remote add upstream https://github.com/microsoft/terminal.git
> 8. 添加完成后再次查看remote 信息,會顯示如下:
> 9. 獲取源倉庫的最新代碼
> 10. 例如源代碼的master分支有更新,我們要合并到我們本地的代碼分支上只需要執行如下操作
git merge upstream/master
> 11. 執行完成后,就會發現本地代碼已經更新到最新,如果有沖突需要我們解決沖突,解決完成后,執行
git push origin
> 12. 每次源代碼有更新都只需要重復第7--11步即可。
2. 使用git的分支方式來解決
> 1. 前面的步驟都參考第一種方式1-6步
> 2. 我們添加遠程分支的模式來進行代碼的合并,
git remote add microsoft https://github.com/microsoft/terminal.git?
> 3. 上述操作中的分支別名mircosoft可以隨便去,易于辨識即可
> 4. fetch分支代碼,并進行合并
git fetch microsoft
git merge microsoft/master
> 5. 執行完成后,就會發現本地代碼已經更新到最新,如果有沖突需要我們解決沖突,解決完成后,執行
git push origin
每次源代碼有更新都只需要重復第4步即可。
三、總結
git 畢竟出自大師之手,我們開發過程中遇到的常見場景和痛點,他基本都考慮到了,有啥問題仔細閱讀官方文檔,絕對有意想不到的驚喜。既然選擇了Git這個神器,就要用“偷懶”的思維去思考開發和團隊協作過程中遇到的問題。尋求最高效,可靠的解決方案。