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