是否有一个或多个 Git HEAD?

问题描述 投票:0回答:1

我实际上是在尝试深入研究 Git 的核心概念。最近我对GitHEAD指针感兴趣。

我知道 HEAD 是一个指向分支(间接指向提交)或直接指向提交的指针。如果我的理解是正确的,这就是附加 HEAD 和分离 HEAD 之间的区别。这个主题帮助我解决了关于这个主题的大部分问题:Git 中的 HEAD 是什么?

但是还有一个问题我没有找到答案。

如果我在分支 A 上并且签出到过去的提交,那么我在该提交上就有一个分离的 HEAD。如果我签出分支 B,则 HEAD 位于该分支的最后一次提交上。如果我返回分支 A,似乎 HEAD 仍在我之前到达的过去提交上。

所以我想知道:是否存在一个且唯一的 HEAD 指针来跟踪每个分支上的先前位置,或者是否存在多个分支的多个 HEAD 指针?

我在一个 Git 项目上进行了多次移动来了解其行为,并检查了多个 Stack Overflow 问题和网络上的文章,从理论上理解了 HEAD 的概念。但我没有找到我的问题的明确答案。

git version-control
1个回答
1
投票

每个存储库只有一个

HEAD
符号引用。符号引用的目标存储在文件
.git/HEAD
中。 (只有一个文件和一行,所以只能有一个
HEAD
)。

如果您此时已签出分支

master
,这就是它的样子:

$ cat .git/HEAD
ref: refs/heads/master

detached HEAD状态下,它看起来像这样:

$ cat .git/HEAD
0123456789abcdef0123456789abcdef01234567
© www.soinside.com 2019 - 2024. All rights reserved.