從github上fork代碼到本地后,我們會把代碼推到我們本地的倉庫去伯顶,進行相應(yīng)的開發(fā)和修改,若github的源倉庫上做了新的改動和bugfix,我們想把源倉庫的修改同步到我們的本地分支设拟,并推送到本地的私有倉庫,該怎么做呢:
- 先創(chuàng)建上游源倉庫地址:
git remote add upstream https://github.com/xxx/xxx.git
可以先查看是否已經(jīng)有upstream 信息
git remote -v
origin https://gitlab.BBB.com/BBB/BBB.git (fetch)
origin https://gitlab.BBB.com/BBB/BBB.git (push)
upstream https://github.com/xxx/xxx.git (fetch)
upstream https://github.com/xxx/xxx.git (push)
- 添加完成以后可以將遠程代碼同步到本地:
# 會將遠程代碼同步到本地
git fetch upstream
- 代碼合并久脯,切換到相應(yīng)的本地分支纳胧,選擇相應(yīng)的upstream分支和當(dāng)前本地分支進行merge操作
git checkout master
git merge upstream/master
# 這樣就相當(dāng)于將upstream/master 的代碼和并到本地分支master中
# merge 的時候有可能會出現(xiàn)以下錯誤:
fatal: refusing to merge unrelated histories
# 解決辦法,加上一個參數(shù)即可:
git merge upstream/master --allow-unrelated-histories
- 解決沖突后帘撰,將合并后的代碼推送到本地分支跑慕,或是自有的倉庫中去,若遠端都是github作為倉庫地址的話,github提供了這種項目merge的操作:
在code界面核行,選擇new pull request 牢硅;
compare across forks 選擇相應(yīng)的分支進行比較同步