How did I end up with a detached HEAD?

我与影子孤独终老i 提交于 2019-11-30 20:09:59

Problem and solution

Close inspection of the IntelliJ-IDEA log reveals the nature of the problem. After creating your first two commits, you were in the following situation:

Somehow, you checked out your first commit, which put you in detached-HEAD state:

Then, similarly, you checked out your second commit (which happened to be the tip of your master branch). This still left you in detached-HEAD state:


You write:

I checked out a commit/branch from master [...]

Be careful. Checking out a commit that happens to be the tip of a branch is not equivalent to checking out that branch!


Note that HEAD is now pointing directly to a commit, not to a branch. That is the definition of "detached HEAD". The fact that HEAD points to the same commit as master changes nothing about the fact that your HEAD is detached.


Some IDEs may not give you a clear indication that you are in fact in detached-HEAD state. Even git log --decorate, for a long time, gave you no clue as to whether HEAD was pointing to master, or detached and pointing directly at master's tip.


You then made a third commit, which, as expected, still left you with a detached HEAD; your master branch still points to the second commit.

To get out of detached HEAD-state, you need to reattach HEAD to a branch (master, here). How depends on what you want to do. In the following, I'm assuming you have access to the Git CLI:

  • If you want to discard your third commit, simply run

    git checkout master
    

    and you'll end up back in this situation:

  • If you want to keep your third commit and make master point to it, run

    git branch -f master HEAD
    

    and then

     git checkout master
    

Parting tip

Learning Git in an IDE is a recipe for disaster. I recommend you build your understanding at the command line first, and only then start using Git from within a GUI, if you feel that doing so would improve your workflow.

For recovering a detached-HEAD, you can :

git checkout master
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!