Git 中的 HEAD

1、Git HEAD 存放位置

HEAD 指的就是 .git/HEAD 文件,它存储着当前分支的名字,我们可以打这个文件看一看:

java 复制代码
ref: refs/heads/master

由此,我们可以得知当前所处于 master 分支。

如果我们继续往下走:打开 refs/heads/master 文件,一串密码映入眼帘:

java 复制代码
7e136f508b982790db5686482075c60ee3ee4fed

这是master分支上最新提交的commit id。

其实,我们可以看下面的这张示意图,对于header的理解将会一目了然:

2、Git HEAD 的作用

2.1、Git HEAD 的作用一:显示当前所出于哪个分支

我们查看git提交日志的时候,会经常碰到head,如下所示:

java 复制代码
$ git log
commit c4f9d71863ab78cfca754c78e9f0f2bf66a2bd77 (HEAD -> master)

如上所示,HEAD -> master 告诉我们当前处于 master 分支。

2.2、Git HEAD 的作用二:指代当前分支的最新提交的commit id

有时候,我们commit提交代码后,发现这一次commit的内容是有错误的,面对这种情况有两种解决方法:

java 复制代码
解决方法1:修改错误内容,再次commit一次

解决方法2:使用git reset命令撤销这一次错误的commit

此时,该head出场了,它常常与reset连用,如下所示:

java 复制代码
$ git reset HEAD <file>

等价于:

java 复制代码
$ git reset commit_id_latest <file>   //commit_id_latest 需替换为实际的最新的commit it 

因为head表示当前分支的最新提交的commit id,上述命令的目的是将文件file恢复到指定的commit id。

此外,我们查看最近一次提交的改动内容,可以通过:

java 复制代码
git diff  HEAD^ HEAD

HEAD^表示倒数第一次提交,即最近一次提交

HEAD^表示倒数第二次提交

HEAD^^表示倒数第三次提交

相关推荐
挖掘狂人2 天前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github
codigger2 天前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
水饺编程2 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
idanzk2 天前
Git 推送 GitHub 报 SSL_READ /src refspec main 不匹配 完整踩坑记录
git·github·ssl
星恒随风2 天前
Linux开发工具详解(二):Git版本控制、GitHub协作与GDB调试实战
linux·笔记·git·学习·github
寺中人3 天前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
酬谢神明则必安3 天前
git学习记录01
linux·git·学习
lingchen19063 天前
版本控制 Git源代码项目管理
git
虫无涯3 天前
Coverity 如何结合 GJB8114-2013使用?
git·单元测试·嵌入式测试·coverity·静态扫描
喵本喵叁肆3 天前
Git 深度解读:从对象模型到分支指针,把版本控制的内核讲透
git