1. 程式人生 > 其它 >【git | 10】git fetch系列

【git | 10】git fetch系列

git fetch

Git 的 clone 命令會為你自動將遠端主機命名為 origin,拉取它的所有資料,建立一個指向它的 master 分支的指標,並且在本地將其命名為 origin/master。同時Git 也會給你一個與 origin 的master 分支在指向同一個地方的本地 master 分支,這樣你就有工作的基礎。

本地有提交,遠端也有別人的推送

1. 遠端庫有人推送,提交了C0和C1:

2. 本地提交了D0和D1:

只要你不與 origin 伺服器連線,你的 origin/master 指標就不會移動。

3. 同步

如果要同步遠端庫到你的工作,執行命令:

$ git fetch origin

注意:這個命令查詢 “origin” 是哪一個伺服器,從中抓取本地沒有的資料,並且更新本地資料庫,移動 origin/master 指標指向新的、更新後的位置。

要特別注意的一點是 fetch 抓取到新的遠端跟蹤分支時,本地的工作區(workspace)不會自動生成一份可編輯的副本,抓取結果是直接送到版本庫(Repository)中。如下圖:

打個比方,在遠端庫 origin 新建了一個分支 dev,git fetch 後本地不會生成一個新的分支 dev(可用 git branch 檢視),只有一個不可以修改的 origin/dev 指標。

合併

這會給你新建一個用於工作的本地分支 test,並且起點位於 origin/master。

在 origin/master 後繼續工作

如果想要在 origin/master 分支上工作,可以新建分支 test 並將其建立在遠端跟蹤分支之上:

$ git checkout -b test origin/master

如果想把拉取的結果合併到本地分支,需要手動合併。使用如下命令:

$ git chekout master
$ git merge origin/master