每次fork代碼後進行團隊協作時就會遇到代碼不同步的問題,這篇文章就記錄一下fork後代碼同步的詳細過程
Step.1:在Github上fork
項目
這一步就不用解釋了,在原項目上點擊 fork
就行
Step.2:拉取fork的項目到本地
注意:這裏拉取的是 自己Github 上的fork
的項目,而不是源項目。
Step.3:進入本地倉庫所在目錄
這裏我用的是Git bash
,直接進入本地倉庫
Step.4:執行git remote -v
查看遠程倉庫路徑
如果上面只有兩行,那就說明沒有設置upstream
。這兩行是自己的遠程倉庫的地址,所以要設置源項目遠程倉庫的地址。
Step.5:設置源項目遠程倉庫地址
執行命令git remote add upstream https://github.com/pkussoj/OnlineJudge_BasedOnQDU.git
這個命令時添加源項目(也就是你fork的項目)的遠程倉庫地址,執行後沒有返回信息。
然後,再執行git remote -v
查看是否成功:
Step.6:執行git status
檢查本地是否有未提交的修改
如果有,則把你本地的有效修改,先從本地倉庫推送到你的github倉庫。
提交修改的過程如下:
git add filename
或者git add .
git commit -m "your note"
git push origin master
最後再執行一次 git status
檢查本地已無未提交的修改。
注意:這一步是爲了避免大量無效修改或文本衝突帶來的更復雜局面。建議執行。
Step.7:執行命令 git fetch upstream
拉取更新
從源代碼倉庫拉取最新代碼
我這裏是已經拉取過最新的代碼,所以沒有返回信息
Step.8:切換分支git checkout master
正常情況下分支應該就是master
,如果是,則可以跳過這一步。
也可以切換到任意分支,拉取你想要分支的代碼。
Step.9:合併遠程分支git merge upstream/master
合併遠程分支代碼到本地倉庫,執行完該命令後,可以看到本地倉庫的代碼已發生修改。
Step.10:執行git push
推送本地代碼到遠程倉庫(自己的)
後記:
上面步驟就是完整步驟,執行完後就可以得到更新後的代碼倉庫。
其實,Step.7,Step.8,Step.9 可以合併爲一個步驟:
git pull upstream master
這裏的git pull
命令時將遠程倉庫代碼拉取到指定分支,這裏也就是將源倉庫代碼直接拉取到本地master
分支。
最後再執行git push
推送到自己的遠程倉庫
相關命令的解釋可以參考:https://blog.csdn.net/weixin_43207025/article/details/105460595
參考資料:
https://github.com/selfteaching/the-craft-of-selfteaching/issues/67