Git版本管理的內容,是一系列由40bytes SHA-1字符串所表明patch,而Git References,則是對這些字符串的引用(也能夠理解爲別名)。爲何須要別名呢?由於這些字符串太難記了!根據使用場景的不一樣,Git References分爲四類:git
這類reference以「refs/heads/」爲前綴,例如「refs/heads/master」,實際就是git分支,git分支指向某一個commit。正由於此,各類分支名的全稱應該是(省略refs字段):fetch
heads/master
heads/bX
heads/bYrem
不過因爲Git默認分支類reference的前綴是「refs/heads/」,所以平時操做分支的時候,能夠把「heads」省去。字符串
這個reference比較特別,它沒有指向某一個SHA-1字符串,而是指向當前正在工做的分支名,如指向refs/heads/masterit
所以,HEAD標記就是當前分支的標記,具體能夠參考2.1小節的介紹。ast
這類reference以「refs/tags/」爲前綴,指向git倉庫某一個tag。版本管理
有關git tag的知識,後面用到的時候再介紹。引用
這類reference以「refs/remotes/」爲前綴,指向遠端倉庫某個SHA-1字符串的標記(也即遠端分支),其格式爲:總結
refs/remotes/遠端倉庫名(如origin)/遠端分支reference名(如master)命名
所以,平時咱們操做遠端分支的時候,所操做的分支名爲(以遠端master分支爲例):
remotes/origin/master
其實就是省略掉refs字段的reference名稱。
總結:知道了這4類reference的含義,以及命名方式以後,咱們對各種git名稱,會有更深入的理解。
補充:一些Git保留使用的特殊refs: