Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a local git repository and had several modified files. Then I needed to quickly produce a fix for something so I

  • stashed my changes (git stash)
  • edited file (vi file)
  • committed (git commit)
  • popped stash (git stash pop)

This resulted in Conflict.

# On branch master
$ git stash pop
Auto-merging page/search.php
CONFLICT (content): Merge conflict in page/search.php
$ git status
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#   both modified:      page/search.php

If I try to cleanup the changes and re-apply stash, the same thing happens (conflict). I do not care much about the page/search.php, but I would like to get other files out from the stash.

Is there a way to convert stash into a patch or simply get the files as they were when stashed?

share|improve this question
up vote 11 down vote accepted

The stash has already been applied to other files; it is only page/search.php that you have to merge manually. Afterwards just run git reset to unstage the changes and keep on hacking – or git add ... and commit.

share|improve this answer
Yes. Exactly. After i recovered the patch with -p, I found out that other files are already updated. – romaninsh Jan 17 '12 at 16:25
very nice, git stash pop, resolve your conflicts then git add x then git reset to get it out of staging, Thanks! – Quang Aug 21 '12 at 4:33
@Quang There should be a stash pop --continue which aliases to reset. :) – Kaz Oct 11 '13 at 0:52

Resolved with:

git stash show -p
share|improve this answer
That saved my day, =) – anatoly techtonik Apr 17 '15 at 9:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .