问题描述
如题,但是这个分支实际上又是不存在的。
问题解答
回答1:说简单一点,HEAD 就是当前活跃分支的游标。形象的记忆就是:你现在在哪儿,HEAD 就指向哪儿,所以 Git 才知道你在那儿!
不过 HEAD 并非只能指向分支的最顶端(时间节点距今最近的那个),实际上它可以指向任何一个节点,它就是 Git 内部用来追踪当前位置的东东。
我回答的不严谨,只是为了简要的让你知道个大概,更具体的去看看官方的手册吧。
回答2:current指针
回答3:转载 http://stackoverflow.com/questions/2304087/what-is-head-in-git 上的回答 翻译有误请轻轻吐槽
你可以认为 HEAD(大写)是'current branch'(当下的分支)。当你用git checkout切换分支的时候,HEAD 修订版本重新指向新的分支。有的时候HEAD会指向一个没有分支名字的修订版本,这种情况叫”detached HEAD“
head(小写)是commit对象的引用,每个head都有一个名字(分支名字或者标签名字等等),但是默认情况下,每个叫master的repository都会有一个head, 一个repository可以包含任意数量的head。在任何时候,只要这个head被选择成为”current head“,那么这个head就成了HEAD,总是大写
回答4:概念上就是@nightire 所说的了, 至于HEAD出现在分支列里,可以理解为桌面上创建一个快捷方式指向QQ图标的快捷方式,看起来和QQ图标是是两个东西,其实指向的都是安装目录下的qq.exe。
回答5:学习 GIT 推荐 廖雪峰老师的GIT教程
摘抄其中的一段:
HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
回答6:楼上都说了,我加一句 HEAD 就是你当前的工作目录所处的位置,可以用 checkout 命令改变 HEAD 指向的位置。注意 HEAD 不一定指向一个分支,也可以指向一个 commit