HEAD 指明了当前签出分支中的最后一次提交。它就像一个指向任何引用的指针。HEAD 可以被理解为 “当前分支“。当你用 “checkout “切换分支时,HEAD被转移到新的分支。
上图显示HEAD引用了commit-1,因为commit-1做了一个 “checkout”。当你做一个新的提交时,它会转移到较新的提交。git head 命令用于查看不同参数下的 Head 状态。它将 Head 的状态存储在 .git\refs\heads
目录中。让我们看看下面的例子。
Git Show Head
git show head 是用来检查 Head 的状态的。该命令将显示 Head 的位置。
语法:
$ git show HEAD
输出:
在上面的输出中,你可以看到Head的提交ID是给定的。这意味着Head是在给定的提交上。
现在,检查项目的提交历史。你可以使用git log命令来检查提交历史。请看下面的输出。
正如我们在上面的输出中看到的,最近的提交和Head的提交ID是一样的。所以,很明显,最后一次提交的是Head。
我们也可以通过提交ID来检查头的状态。从上面的输出中复制提交ID,然后粘贴到git show命令中。如果提交id是最后一次提交的id,其结果与git show head命令相同。请看下面的输出。
上面的输出与git show输出相同。
HEAD能够引用一个不与分支名称相关联的特定修订版。这种情况被称为分离的HEAD.
Git Detached Head
GitHub 会记录所有提交或快照的时间。如果你在终端检查 “git log”,你可以显示到第一次提交之前的所有提交。分离的 HEAD 模式允许你发现仓库的旧状态。这是 Git 的一种自然状态。
当Head不指向最近的提交时,这种状态被称为detached Head。如果你用一个较早的提交来结账,它就会处于分离头的状态。请看下面的例子。
我已经复制了旧的提交号。现在我将用这个ID进行检查。
正如你在给定的例子中看到的,Head并不指向最近的提交。这被称为分离的头部状态。我们总是建议,不要在分离的Head上提交。