1.解決方式1
首先要先确定一下是否建立了主repo的遠端源: git remote -v
如果裡面隻能看到你自己的兩個源(fetch 和 push),那就需要添加主repo的源: git remote add upstream URL
git remote -v
這裡的upstream是我們建立的遠端branch的一個本地别名。 注意: 一般有https或者ssh的方式,如果是ssh的方式,則需要添加ssh的URL,不能添加https的方式,否則不能在ssh下通路該URL,另外,如果想删除remote的upstream标簽,則可以運作: git remote rm upstream
然後你就能看到upstream了。
如果想與主repo合并: git fetch upstream
git merge upstream/master
2.解決方式2
Fork 就是遠端端上一份别人倉庫的拷貝。
流程:fork 源倉庫 ---① fork-->
fork 倉庫副本 ---② clone-->
local 倉庫
當你在遠端端(如 Github)上 fork 了别人的一個倉庫時,你的遠端倉庫将建立一份 fork 來的“倉庫副本”。如果你想在本地修改這份副本倉庫,你需要先 clone 它到本地:
$ git clone [email protected]:YOUR_USERNAME/YOUR_FORK# 或$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK
現在你已經有了一份 fork 的本地副本,同時你可以開始在本地修改代碼了。
同步更新
流程:fork 源倉庫 ---① fetch & merge-->
local 倉庫 ---② push-->
fork 倉庫副本
到目前為止,你本地倉庫的遠端資訊可以用$ git remote -v
檢視到:
https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
為了獲得 fork 源倉庫的更新,現在要添加 fork 源倉庫的位址,例如:
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git
這裡的upstream
是可以修改名稱的,代表 fork 源倉庫的别名。
用$ git remote -v
檢視本地倉庫關聯的遠端位址到:
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git(fetch)upstreamhttps://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git (push)
以上設定好了,當你要更新 fork 源倉庫的時候,首先 fetch 一份源倉庫變動到本地,這回生成一個分支upstream/master
:
$ git fetch upstream
可以用檢視分支指令檢視所有分支:
$ git branch
然後,切換到本地 master 分支:
$ git checkout master
合并upstream/master
分支的變化到本地 master 分支:
$ git merge upstream/master
到這裡,僅把 fork 源倉庫更新到了本地倉庫,如果想要更新遠端端的 fork 倉庫副本 ,必須向遠端端 push 一次:
$ git push origin master
以上,fork 源倉庫、fork 倉庫副本 和 local 倉庫實作了同步更新。
文/onestark(簡書作者)原文連結:http://www.jianshu.com/p/29775d91f536