從github上fork代碼到本地后,我們會(huì)把代碼推到我們本地的倉(cāng)庫(kù)去,進(jìn)行相應(yīng)的開(kāi)發(fā)和修改,若github的源倉(cāng)庫(kù)上做了新的改動(dòng)和bugfix,我們想把源倉(cāng)庫(kù)的修改同步到我們的本地分支,并推送到本地的私有倉(cāng)庫(kù),該怎么做呢:
- 先創(chuàng)建上游源倉(cāng)庫(kù)地址:
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)
- 添加完成以后可以將遠(yuǎn)程代碼同步到本地:
# 會(huì)將遠(yuǎn)程代碼同步到本地
git fetch upstream
- 代碼合并,切換到相應(yīng)的本地分支,選擇相應(yīng)的upstream分支和當(dāng)前本地分支進(jìn)行merge操作
git checkout master
git merge upstream/master
# 這樣就相當(dāng)于將upstream/master 的代碼和并到本地分支master中
# merge 的時(shí)候有可能會(huì)出現(xiàn)以下錯(cuò)誤:
fatal: refusing to merge unrelated histories
# 解決辦法,加上一個(gè)參數(shù)即可:
git merge upstream/master --allow-unrelated-histories
- 解決沖突后,將合并后的代碼推送到本地分支,或是自有的倉(cāng)庫(kù)中去,若遠(yuǎn)端都是github作為倉(cāng)庫(kù)地址的話,github提供了這種項(xiàng)目merge的操作:
在code界面,選擇new pull request ;
compare across forks 選擇相應(yīng)的分支進(jìn)行比較同步