git知識總結-1.git基礎之git reference

1.前言

Git版本管理的內容,是一系列由40bytes SHA-1字符串所表明patch,而Git References,則是對這些字符串的引用(也能夠理解爲別名)。爲何須要別名呢?由於這些字符串太難記了!根據使用場景的不一樣,Git References分爲四類:git

2.git references

2.1 指向最後一次提交的reference(分支名)

這類reference以「refs/heads/」爲前綴,例如「refs/heads/master」,實際就是git分支,git分支指向某一個commit。正由於此,各類分支名的全稱應該是(省略refs字段):fetch

heads/master 
heads/bX 
heads/bYrem

不過因爲Git默認分支類reference的前綴是「refs/heads/」,所以平時操做分支的時候,能夠把「heads」省去。字符串

2.2 指向當前分支的reference(HEAD 標記)

這個reference比較特別,它沒有指向某一個SHA-1字符串,而是指向當前正在工做的分支名,如指向refs/heads/masterit

 

所以,HEAD標記就是當前分支的標記,具體能夠參考2.1小節的介紹。ast

2.3 指向某一個tag的reference

這類reference以「refs/tags/」爲前綴,指向git倉庫某一個tag。版本管理

有關git tag的知識,後面用到的時候再介紹。引用

2.4 指向遠端倉庫最後一次提交的reference(遠端分支)

這類reference以「refs/remotes/」爲前綴,指向遠端倉庫某個SHA-1字符串的標記(也即遠端分支),其格式爲:總結

refs/remotes/遠端倉庫名(如origin)/遠端分支reference名(如master)命名

所以,平時咱們操做遠端分支的時候,所操做的分支名爲(以遠端master分支爲例):

remotes/origin/master

其實就是省略掉refs字段的reference名稱。

總結:知道了這4類reference的含義,以及命名方式以後,咱們對各種git名稱,會有更深入的理解。

 

補充:一些Git保留使用的特殊refs:

    • HEAD,指向當前本地分支的當前commit狀態
    • FETCH_HEAD,指向當前本地分支在最近一次fetch操做時獲得的commit狀態
    • ORIG_HEAD,指向任何merge或rebase以前的剛剛檢出時的commit狀態
相關文章
相關標籤/搜索