问题产生
正常情况 (not detached)
HEAD
是什么?以下引用自Git 内部原理 - Git 引用:
HEAD
文件是一个符号引用(symbolic reference),指向目前所在的分支。 所谓符号引用, 意味着它并不像普通引用那样包含一个 SHA-1 值——它是一个指向其他引用的指针。
正常情况下 HEAD
指向一个引用(当前分支的引用),该引用又指向一个 commit。此时
我们说 HEAD
是“attach”到一个分支的。即
HEAD -> refs/heads/master -> 9cbcb8c6a4dcd0ab9cc26a7d7b4ba6fb3e90cf75
异常情况 (Detached)
当 HEAD
处于 Detached 情况时,它直接指向一个 commit,即:
HEAD -> 9cbcb8c6a4dcd0ab9cc26a7d7b4ba6fb3e90cf75
如果 HEAD
指向的 commit 没有被除 HEAD
之外的引用指向,则在 HEAD
改变指向之
后会无法再被引用,只能等待垃圾回收。
解决方法
知道了这些,问题的解决方法也就显得很直观了,只需 checkout
某一个 branch 即可,
此处以 master
为例:
1 | git checkout master |