天天看點

gitlab上fork别人的代碼後更新的2種解決方式

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