我认为我理解HEAD是'当前'分支,但是当列出分支时,我看到我的当前和远程HEAD对于我的一个回购是不同的。另一个存储库甚至没有列出远程头部分支。有人可以解释一下:
me@portalinux ~/edcourse $ git branch -va
* master 9de94d9 Work on week 3 stuff thursday
remotes/origin/HEAD -> origin/master
remotes/origin/master 9de94d9 Work on week 3 stuff thursday
正如你所看到的,原点/ HEAD似乎只是指向主人。但在下面的回购中却没有:
me@portalinux ~/cpp $ git branch -va
* master f30bc16 End of chapter 2
remotes/cpp/master f30bc16 End of chapter 2
我处理存储库的唯一区别在于第一个存储库是由两个不同的客户端初始化和更新的,第二个存储库仅由一台计算机更新。有兴趣看看,一旦我开始使用第二台计算机进行更新,第二个repo是否会获得指向master的远程HEAD。
答案 0 :(得分:3)
HEAD
指向当前分支的想法非常接近,但请注意,它可能并非总是如此。例如,在“分离头”状态下,它可能指向任意提交。
共享Git存储库通常实现为bare repositories,这意味着它们缺少工作副本。实质上,它们仅作为.git/
目录存在。在没有工作副本的情况下,“当前分支”的概念缺乏意义,因此远程通常没有HEAD
。
某些遥控器做有一个HEAD
,例如非裸露的遥控器。 GitHub使用HEAD
来标识"default branch",这是一个特定于GitHub的概念。其他供应商可能会效仿,或者将其用于完全不同的东西。