2012-01-26 125 views
5

似乎我可以從遠程存儲庫中的分支中,或從分支中獲取分支。如果是這樣,那麼遠程追蹤分支的目的是什麼?遠程追蹤分支和遠程分支之間有什麼區別?

僅僅是爲了檢查分支並看看它是什麼樣子?看起來,遠程追蹤分支就像是遠程分支的鏡像。

FYI:我是相當新的Git的,但已經閱讀並重新看了很多教程,但我仍然沒有在這一點上更清晰!

謝謝!

回答

5

你是對的 - 遠程分支確實在遠程倉庫中鏡像分支。

遠程分支和遠程跟蹤分支兩者都用來指的是形式refs/remotes/<remote-name>/<branch-name>的一個分支,例如報道如origin/master。 (請注意,這有時與跟蹤遠程分支的分支的概念相混淆,例如,您的主分支與原始/主分支相關聯。術語不幸,但我們確實存在)。

遠程跟蹤分支將記住遠程存儲庫中分支的最後一個已知位置。爲了使git pull正常工作,這是必要的;它從遠程分支(原始主分支)獲取,並將其存儲在遠程跟蹤分支(origin/master)中,然後在本地進行合併。提交只能在本地創建,合併只能在工作樹中完成,所以這是完全必要的!

遠程跟蹤分支也是有用的,因爲你提到,在遠程倉庫發生了什麼事的檢查。默認情況下,有用於遠程的分支機構的所有遠程分支,所以你可以很容易地使用git remote update [--prune] <remote>git fetch <remote>對其進行更新,然後檢查出來,只要你喜歡和他們一起玩。請注意,除了檢查外,您還可以做其他事情 - 您可以對它們進行比較(git diff origin/master),找出您沒有提交的內容(git log master..origin/master)或其他任何您喜歡的內容。由於所有歷史考試都是本地的,所以遠程分支必須在那裏供您使用。

由於git push影響遠程分支機構,它自然更新您的遠程跟蹤分支;改變起源的主人並不是很聰明,然後假裝它仍然處於舊的位置,直到你找到了!但它實際上並不依賴於遠程跟蹤分支。 (如果設置push.default來跟蹤,它使用跟蹤配置,如主跟蹤出身的主人,來決定推什麼,但它仍然實際上並不依賴於遠程跟蹤分支)。

+0

+ 1你的回答比我的回答好。 – Abizern