正如你可能知道的:在git中一切都是本地的。你的歷史是本地的,你的標籤是本地的,你的分支是本地的。對於偏遠分支,情況甚至如此,但我瞭解您對該主題的不安全感。
作爲git中的任何分支,遠程分支只是對特定提交的引用。 Git認爲這些分支由於其命名而不同。通常所有本地分行都可以在您的.git
目錄中找到refs/heads
,另一方面遠程分行在refs/remotes
(和標籤refs/tags
)中找到。否則,這個概念與「通常」的分支沒有什麼不同。
編輯:作爲Jubobs在評論中建議:術語remote-tracking branch
是減少混亂,應該暗示爲什麼這些分支是本地的。他們只是跟蹤遠程分支,而不在遠程本身。
現在你應該明白,雖然git branch -r
列出了遠程分支,但分支仍然是完全本地的。
但是,git怎麼知道把分支/變化從遠程放到哪裏?
好吧,那很簡單,它的全部內容都可以在您的存儲庫配置中找到,您可以在.git/config
中找到;在這裏你可以找到你的遠程配置(如果有的話)應該看起來很類似:
[remote "origin"]
url = /this/is/the/url/to/my/remote
fetch = +refs/heads/*:refs/remotes/origin/*
有趣的是這個小文本片段:fetch = +refs/heads/*:refs/remotes/origin/*
它有什麼作用?
它告訴git從refs/heads
(包含所有本地分支)獲取遠程存儲庫的所有分支,並將所有這些分支「映射」到refs/remotes/origin
(位於本地存儲庫中)的分支上。
TL; DR:git branch -rd
只會刪除本地分支。遠程存儲庫中分支的本地副本。
你試過'git分支-rD遙控器/原點/特性/配置文件同步修復程序? –
不會刪除遠程? – user24793
不,只有遠程分支的本地對應方。 –