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?
Related problems
- Why did my Git repo enter a detached HEAD state?
- How can I move HEAD back to a previous location? (Detached head) & Undo commits
- What to do with commit made in a detached head
- What happens to git commits created in a detached HEAD state?
- 'git checkout' docs claim working tree will change; why are edits not discarded?
- How did I end up with a detached HEAD?
- Detached HEAD Issue in Android Studio