So I had a load of changes and some untracked files. I needed to tweak something, so I used git stash -u
, modified a couple of things, committed those changes, pushed them, and then tried to git stash pop
.
Because I'd modified a couple of files that I'd stashed, I got the following message:
error: Your local changes to the following files would be overwritten by merge:
file_1.py
file_2.py
Please, commit your changes or stash them before you can merge.
Aborting
This seems odd, I had committed all new changes, my checkout was clean when I ran the command.
It seems the git stash pop
operation un-stashed half of my changes and the untracked files, but if I try and git stash pop
again I get output like:
some_file.html already exists, no checkout
some_other_file.html already exists, no checkout
yet_another_file.html already exists, no checkout
Could not restore untracked files from stash
git stash show
still shows a list of my stashed changes, but I'm at a loss as to what I do now.
How can I get myself unstuck?
For those who do have un-committed work, and want to pop their stash without losing that work, here is a way (with thanks to @iFreilicht):
Temporarily stage any uncommitted changes:
git add -u .
Now you can apply your stash without git complaining (hopefully):
git stash pop
Now unstage everything, but leave the files as they are now:
git reset