如果我在本地 repo 中設定了一個遠程服務器,并且第一次進行 git fetch,如果有 10 個遠程分支,那么根據我的理解,我現在將有 10 個遠程跟蹤分支。
根據我的理解,這些遠程跟蹤分支是指向這些遠程分支的指標,而不是這些分支上代碼的實際完整本地副本......是這樣嗎?
我的后續問題是,如果我在 git fetch 之后簽出其中一個遠程分支,git 是否仍然需要連接到遠程分支以獲得所有代碼,還是會簡單地切換到本地機器上的遠程跟蹤分支,該分支已經擁有所有代碼?
uj5u.com熱心網友回復:
據我所知,這些遠程跟蹤分支是指向這些遠程分支的指標,而不是這些分支上的實際完整的本地代碼副本......是這樣嗎?
不,這不正確。
Git 分支只是一個名稱和一個提交 ID。遠程分支沒有什么特別之處,除了你不提交給它們。
當你獲取時,你會下載每個提交的完整副本。每個提交都知道它之前的提交(或者在合并的情況下,兩個或更多的提交)。這就是 "歷史"。Git在存盤和傳輸該歷史方面非常高效。
我的后續問題是,如果我在 git fetch 之后簽出這些遠程分支之一,git 是否仍然需要連接到遠程以獲得所有代碼,還是會簡單地切換到本地機器上已經擁有所有代碼的遠程跟蹤分支?
Git 已經有一個完整的版本庫副本。當你git checkout origin/main時,Git 會切換到 origin/main 所指向的已經下載的提交。
只有少數幾個Git命令會做任何網路訪問。主要的是git push、git fetch和git pull(這只是一個fetch 一個merge)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/332522.html
標籤:
下一篇:了解切片操作的輸出
