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?
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 delete your changes associated with the detached HEAD
You only need to checkout the branch you were on, e.g.
git checkout 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 checkout -- path/to/foo
This will restore the file foo to the state it is in the index.
If you want to keep your changes associated with the detached HEAD
- Run
git branch tmp
– this will save your changes in a new branch called tmp
.
- Run
git checkout 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 checkout master
.