Git历险之-HEAD detached

/ 0评 / 24

前言

今天在使用git的过程中发现按照往常的commit以后再使用git push origin master命令虽然提示push成功,但是github上面没有没有显示出来,最开始以为遇到bug了,于是重新push,然而提示Everything up-to-date,百思不得其解,最后无意间使用git status命令发现了今天的主角-detached  HEAD。下面就来介绍下如何解决push成功但是github上面不显示。

解决detached  HEAD

"detached HEAD" state——HEAD头指针指向了一个具体的提交ID,而不是一个分支。

首先使用status命令查看git状态:发现HEAD detached指向了57f51ee,也就是上一次提交

$ git status

HEAD detached from 57f51ee

nothing to commit, working directory clean

然后使用branch命令查看分枝:HEAD指针指向了HEAD detached,也就是上一次的commit并没有提交到master分枝上面。

$ git branch

* (HEAD detached from 57f51ee)

master

解决方法:

使用checkout命令切换到master分枝,这是git会提示落后了一次提交,也就是上一次提交不见了。不要心急,使用git reflog即可查看所有的提交。

$ git checkout master

Warning: you are leaving 1 commit behind, not connected to

any of your branches:

我们可以看到,在57f51ee HEAD@{2}的时候,HEAD指向了57f51ee这次提交而没有指向master,当我们使用checkout命令切换到master分枝的时候(57f51ee HEAD@{0}),从最新提交e065ee0切换到了上一次提交57f51ee,所以落后了一次提交,这时我们使用reset命令直接将HEAD转向最新提交e065ee0即可。

$ git reflog

57f51ee HEAD@{0}: checkout: moving from e065ee0f51334dc72efc91dea18ad4c05912be08 to master

e065ee0 HEAD@{1}: commit: 新提交

57f51ee HEAD@{2}: checkout: moving from master to 57f51eefd108d6687bce57d04d44056d9acd3a28

57f51ee HEAD@{3}: commit: 完成主界面布局(未添加侧滑菜单等)

总结

首先使用$ git branch查看分枝,如果出现游离分枝,使用$ git checkout master切换到主分支,这时可能丢失了一次提交,使用$ git reflog查看所有提交,找到最新的提交(比如e065ee0),使用$ git reset --hard e065ee0将HEAD指向最新提交即可,然后就可以push了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注