git HEAD 详解

Last Modified: 2023/06/22

概述

git 中有不少概念,这些概念是 git 比较复杂的地方,git 新手甚至不乏一些老手也会对某些概念模糊不清,本文将会为大家讲述 git HEAD 这个概念,希望对大家有用。

什么是 git HEAD

HEAD 是一个特殊的 ref,可以把他想象成一个全局指针,总是指向当前检出的 commit。HEAD 存储在名为 .git/HEAD 的文件中,HEAD 通常指向当前活动分支的最新提交。

注:不知道 ref 的同学请移步 git refs 详解

假设我们当前在 dev 分支,我们查看下 HEAD 文件的内容:

cat .git/HEAD
# 输出如下
ref: refs/heads/dev

git heads 详解 中我们说到 refs/heads/dev 文件的内容是 dev 分支的最后一次提交的 commit id。

当我们切换分支时或者切换到某个 commit,HEAD 的内容也会随之改变。看下面这张图可能更容易理解:

git HEAD 应用

你可能经常遇到一个场景,你辛辛苦苦做好一个功能,提交了一个 commit,然后被告知需求取消了,这个时候你需要撤销最后一次提交,可以使用 git reset 命令:

#撤销最近一次提交
git reset HEAD~1
#如果想撤销最近两次提交
git reset HEAD~2
#撤销最近三次提交
git reset HEAD~3

git reset 命令中就是用到了 HEAD。HEAD 指向当前 commit,HEAD~1 指向前一个 commit,看下面的示意图:

有问题吗?点此反馈!

温馨提示:反馈需要登录