This is a pipeline on branch frontend over the last two weeks.
| Stash@{3} is all code since Stash@{1} (excluding the two tiny commits)
| Tiny Commit
| Tiny commit
| Huge bulk commit two weeks ago, now rebased and moved to Stash@{1}
My working tree is currently clean.
Stash@{1} is the contents from a bulk commit of general development code two weeks ago (this should have been stashed in the first place). This commit was undone and moved to stash.
Stash@{3} is the newest work on that tree since Stash@{1} (minus a couple of changes that have been committed).
I need to combine these two stashes together in my working tree so I can make a number of commits from this huge pool of work.
I ran git stash apply stash@{1} then I tried:
git stash apply stash@{3}
git stash show -p | git stash apply stash@{3}
but I get ‘dirty working tree’ in both cases. How can I merge this work together? Because stash@{3} is newer, I want it to supersede stash@{1} wherever there are conflicts.
You can only apply a stash if there are no conflicts with modified files in the working tree, so, first, ensure there are no modified files in
git status, if there are, commit them. Then do:Then you can either make a new commit, or amend the previous one to combine them. You may need to resolve merge conflicts after each apply.
Also, if you ever decide to use
git stash poprather thanapply, note thatstash@{3}would becomestash@{2}since the first one was popped off.