在技术上,但完全是具体的,
HEAD
实际上是一个文件,
.git/HEAD
. 它包含:
什么时候?
头部
包含提交的哈希ID,仅此而已。Git称这种情况为
分离头
唯一可用的信息是提交的散列ID。
什么时候?
头部
包含分支的名称,但是,现在有两种方法可以询问Git:
-
嘿,吉特,告诉我什么散列ID
头部
名字。
吉特看着
头部
,看到它的名字
master
,然后看
主人
查看什么散列ID
主人
名字。这就是你问题的答案。
-
或者,
嘿,吉特,告诉我哪个分支
头部
名字。
吉特看着
头部
,看到它的名字
主人
,并告诉你
主人
作为你问题的答案。
每
分行名称
始终只包含一个提交的哈希ID,因此如果
头部
包含分支名称,Git始终可以执行
头部
-通过执行这两个步骤来散列ID。什么时候?
头部
但是,包含原始哈希ID,如果试图询问Git所包含的分支名称,则会出现错误:
$ git checkout --detach master
HEAD is now at 83232e3864 The seventh batch
$ git symbolic-ref HEAD
fatal: ref HEAD is not a symbolic ref
或者,使用
git rev-parse --symbolic-full-name
,只是指纹
头部
:
$ git rev-parse --symbolic-full-name HEAD
HEAD
重新连接
头部
到
主人
使它们都产生分支名称:
$ git checkout master
Switched to branch 'master'
$ git symbolic-ref HEAD
refs/heads/master
$ git rev-parse --symbolic-full-name HEAD
refs/heads/master
所以就这样
头部
可以是分支名称或提交哈希,除非它只能是提交哈希。