How do I fix a Git detached head?

git, git-detached-head

Solution

Detached head means you are no longer on a branch, you have checked out a single commit in the history (in this case the commit previous to HEAD, i.e. HEAD^).

If you want to keep your changes associated with the detached HEAD

- Run `git switch -c tmp` - this will save your changes in a new branch called `tmp`.

- Run `git switch master`

- If you would like to incorporate the changes you made into `master`, run `git merge tmp` from the `master` branch. You should be on the `master` branch after running `git switch master`.

If you want to delete your changes associated with the detached HEAD

You only need to checkout the branch you were on, e.g.

git switch master

Next time you have changed a file and want to restore it to the state it is in the index, don't delete the file first, just do

git restore -- path/to/foo

This will restore the file foo to the state it is in the index.

Problem

I was doing some work in my repository and noticed a file had local changes. I didn't want them anymore so I deleted the file, thinking I can just checkout a fresh copy. I wanted to do the Git equivalent of ``` svn up . ``` Using `git pull` didn't seem to work. Some random searching led me to a site where someone recommended doing ``` git checkout HEAD^ src/ ``` (`src` is the directory containing the deleted file). Now I find out I have a detached head. I have no idea what that is. How can I undo?

Original source

Related problems