How can I format patch with what I stash away

GitGit StashGit Patch

Git Problem Overview


In git, I stash away my changes. Is it possible that I can create a patch with what I stash away? And then apply that patch in some other repository (my co-worker's)?

I know git format-patch -1, but I think that it's for what I have committed. But I am looking for the same thing for changes that I stashed away.

And how can I apply a patch in other repository?

Git Solutions


Solution 1 - Git

Sure, git stash show supports this:

git stash show -p

So, use

git stash list

to find out the number of the stash that you want to export as a patch, then

git stash show -p stash@{<number>} > <name>.patch

to export it.

For example:

git stash show -p stash@{3} > third_stash.patch

Solution 2 - Git

This answer provides info about both saving the patch and applying it where you want to use it.

To stash the output in a file:

 git stash show -p --color=never > my-patch-name.patch

Verify patch looks good:

git apply --stat my-patch-name.patch

Verify no errors:

git apply --check my-patch-name.patch

Apply the patch

git apply my-patch-name.patch

Solution 3 - Git

Use

$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter

to get a list of your recently stashed stuff. Git actually creates commit objects when you stash.

They are commits like everything else. You can check them out in a branch:

$> git checkout -b with_stash stash@{0}

You can then publish this branch and you colleague can merge or cherry-pick that commit.

Solution 4 - Git

Above solutions won't work for binary data. The following add support for it:

git stash show stash@{0} -p --binary

Edit

Note: I just wanted to add a comment to above replies but my reputation is not sufficient.

Solution 5 - Git

I believe this might be one of the udpates from Git recently. You don't have to patch the changes you stashed away any more. you can just apply your stashed changes on one branch to another.

Say on branch A you have stashed away some changes, referred as stash@{1}.

you now switch to branch B. you can just do:

$git stash apply stash@{1}

this applies your branch A changes onto branch B.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsilverburghView Question on Stackoverflow
Solution 1 - GitGreg HewgillView Answer on Stackoverflow
Solution 2 - GitcalvinfView Answer on Stackoverflow
Solution 3 - GitperitusView Answer on Stackoverflow
Solution 4 - GitDavide GuerriView Answer on Stackoverflow
Solution 5 - GitstucashView Answer on Stackoverflow