How to cherry-pick from stash in git?
This works for me... git cherry-pick -nm1 stash
YMMV
The problem is that a stash consists of two or three commits. When stashing, the modified working tree is stored in one commit, the index in one commit, and (if using the --include-untracked
flag) any untracked files in a third commit.
You can see this if you use gitk --all
and do a stash.
stash@{0}
points to the commit that contains the working tree.
You can however cherry-pick from that commit if you do
git cherry-pick "stash@{0}" -m 1
The reason that cherry-pick
thinks that the stash is a merge, and thus needs the -m 1
parameter is that the stash commit has multpile parents, as you can see in the graph.
I am not sure exactly what you want to achieve by cherry-picking. A possible alternative is to create a branch from the stash. Commit changes there and merge them to your current branch.
git stash branch stashchanges
git commit -a -m "changes that were stashed"
git checkout master
git merge stashchanges