Fork 就是遠(yuǎn)程端上一份別人倉(cāng)庫(kù)的拷貝谍憔。
流程:fork 源倉(cāng)庫(kù) ---① fork-->
fork 倉(cāng)庫(kù)副本 ---② clone-->
local 倉(cāng)庫(kù)
當(dāng)你在遠(yuǎn)程端(如 Github)上 fork 了別人的一個(gè)倉(cāng)庫(kù)時(shí),你的遠(yuǎn)程倉(cāng)庫(kù)將新建一份 fork 來(lái)的“倉(cāng)庫(kù)副本”主籍。如果你想在本地修改這份副本倉(cāng)庫(kù)习贫,你需要先 clone 它到本地:
$ git clone git@github.com:YOUR_USERNAME/YOUR_FORK
# 或
$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK
現(xiàn)在你已經(jīng)有了一份 fork 的本地副本千元,同時(shí)你可以開始在本地修改代碼了。
同步更新
流程:fork 源倉(cāng)庫(kù) ---① fetch & merge-->
local 倉(cāng)庫(kù) ---② push-->
fork 倉(cāng)庫(kù)副本
到目前為止幸海,你本地倉(cāng)庫(kù)的遠(yuǎn)程信息可以用 $ git remote -v
查看到:
https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
為了獲得 fork 源倉(cāng)庫(kù)的更新物独,現(xiàn)在要添加 fork 源倉(cāng)庫(kù)的地址,例如:
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git
這里的 upstream
是可以修改名稱的婉陷,代表 fork 源倉(cāng)庫(kù)的別名。
用 $ git remote -v
查看本地倉(cāng)庫(kù)關(guān)聯(lián)的遠(yuǎn)程地址到:
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)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git (push)
以上設(shè)置好了世杀,當(dāng)你要更新 fork 源倉(cāng)庫(kù)的時(shí)候瞻坝,首先 fetch 一份源倉(cāng)庫(kù)變動(dòng)到本地杏瞻,這回生成一個(gè)分支 upstream/master
:
$ git fetch upstream
可以用查看分支命令查看所有分支:
$ git branch
然后,切換到本地 master 分支:
$ git checkout master
合并 upstream/master
分支的變化到本地 master 分支:
$ git merge upstream/master
到這里浮创,僅把 fork 源倉(cāng)庫(kù)更新到了本地倉(cāng)庫(kù)砌函,如果想要更新遠(yuǎn)程端的 fork 倉(cāng)庫(kù)副本 讹俊,必須向遠(yuǎn)程端 push 一次:
$ git push origin master
以上,fork 源倉(cāng)庫(kù)仍劈、fork 倉(cāng)庫(kù)副本 和 local 倉(cāng)庫(kù)實(shí)現(xiàn)了同步更新贩疙。