HEAD 是一个对当前检出记录的**符号引用** —— 也就是**指向你正在其基础上进行工作的提交记录**。HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。

HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。

1
2
3
4
git checkout c1
git checkout master
git commit -m "c2"
git checkout c2

1607615563059-42a33616-bd9e-4d10-98cf-9862dc34f124.png

如果想看 HEAD 指向,可以通过 cat .git/HEAD 查看

分离的 HEAD

**分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。**在命令执行之前的状态如下所示:

HEAD -> master -> C1

HEAD 指向 master, master 指向 C1

1
git checkout c1

现在变成了

HEAD -> C1

1607615425924-d556220b-006f-4922-904a-b774906b22db.png