When I have to apply stashed changes to a dirty working copy, e.g. pop more than one changeset from the stash, I use the following: $ git stash show -p | git apply -3 && git stash drop Basically it creates a patch pipes that to the apply command if there are any conflicts they will need to be resolved via 3-way merge if apply (or merge) succeeded it drops the just applied stash item... I wonder wh