Stashing only un-staged changes in Git

Unapiedra picture Unapiedra · Oct 4, 2011 · Viewed 53.6k times · Source

I'd like to do the following work flow:

  1. Add changes to the stage.
  2. Stash all the other changes that were not staged.
  3. Do some stuff with the things in stage (i.e. build, run tests, etc)
  4. Apply the stash.

Is there a way to do step 2?

Example

 echo "123" > foo
 git add foo # Assumes this is a git directory
 echo "456" >> foo
 git stash
 cat foo # Should yield 123

Answer

vhallac picture vhallac · Oct 4, 2011

git stash save has an option --keep-index that does exactly what you need.

So, run git stash save --keep-index.