git中的HEAD是什么?

上次提交,HEAD和我可以在我的目录中看到的文件状态似乎有区别。

什么是HEAD,我能做些什么以及我应该避免哪些错误?


HEAD是对当前签出分支中最后一次提交的引用。


这是一个小例外,它是分离的HEAD。 分离的HEAD是每当你签出一个提交(或标签)而不是一个分支时你最终会遇到的情况。 在这种情况下,你必须把它想象成没有名字的临时分支。 所以我们只有HEAD,而不是命名分支引用。 它仍然允许你进行提交(它会更新HEAD),所以如果你想把一个分离的HEAD作为一个没有名字的临时分支,上面的简短定义仍然是正确的。


HEAD是对当前签出的提交的引用(引用)。

在正常状态下,它实际上是您检查出的分支的符号引用 - 如果您查看.git / HEAD的内容,您会看到类似“ref:refs / heads / master”的内容。 分支本身是对分支顶端提交的引用。 因此,在正常状态下, HEAD有效地指向当前分支尖端的提交。

也可以有一个“分离的头部”。 当你检出(本地)分支以外的东西时,会发生这种情况,如远程分支,特定提交或标记。 在您选择编辑提交时,最常见的地方是在交互式重新分页期间。 在分离HEAD状态下,您的HEAD是对提交的直接引用 - .git / HEAD的内容将是SHA1哈希。

一般来说,HEAD只是一个方便的名称,意思是“你已经检出了什么”,你不必担心太多。 只要知道你已经检出了什么,并且记住,如果你不在分支上(或者脱离HEAD状态),你可能不想提交,除非你知道你在做什么(例如在一个交互式rebase中) 。


Git中的HEAD指针

Git维护一个名为HEAD的引用变量。 我们称这个变量为一个指针,因为它的目的是引用或指向存储库中的特定提交。 当我们进行新的提交时,指针将会改变或移动以指向新的提交。 HEAD总是指向我们仓库中当前分支的顶端。 现在,这与我们的存储库,而不是我们的登台索引或我们的工作目录。

另一种考虑它的方式是我们仓库的最后一个状态或上次检出的状态,并且因为这是仓库中断或最后一个状态的地方,所以您还可以说HEAD指向下一个提交的父项,或者它是写作将在哪里发生。

我认为想一想这个好比喻是磁带录音机上的回放和录音头。 当我们开始录制音频时,磁带移过磁头,并录制到磁头上。 当我们按下停止记录头停止的地方时,当我们再次按下记录时,它将再次开始记录的位置。现在我们可以四处走动,我们可以将头移动到不同的地方,但是无论头部位于何处当我们再次击中Record时,它将开始录制。

Git中的HEAD指针非常相似,它指向我们将要开始录制的地方。 这是我们在我们的仓库中为我们所承诺的事情离开的地方。

链接地址: http://www.djcxy.com/p/36241.html

上一篇: What is the HEAD in git?

下一篇: How to undo a git pull?