I needed to reset my branch to an earlier working state (commit) so I did:
git reset --hard c70e611
Now I see
HEAD detached at c70e611
nothing to commit, working directory clean
How to fix / understand / get around the detached head message and push so that c70e611 is now the latest commit I am using and represents the HEAD of the branch I am working in (not master).
Best Answer
This is because when you did the
git reset --hard
, you were not on any branch at that time. You had a detachedHEAD
, and that detached head got moved with thegit reset --hard
command, along with a rewrite of your working tree to that state.If you want some branch
foo
to bec70611
, then:If this is considered to be a good state to push to
foo
's upstream then justgit push <remote-name> foo
.There is a more direct way to force
foo
toc70611
without checking it out to be the current branch. Namely, you can rewrite whatfoo
points to using thegit update-ref
command.Before doing any of the above, I would pause and try to see how I had ended up in a detached state without noticing. Perhaps it was an unfinished rebase or whatever. Step one is to review the last few entries in the
git reflog
to help jog your memory.