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 git@github.com: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
