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: