title: Git stash removes added changes
body: <p>During development, I routinely add working versions of files (but not commit them) to my git repo. I continue to work on those files, till they reach commitable stage, when I can commit them. So the repo looks like below</p>
  
  <pre><code>$ git status
  
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD &lt;file&gt;..." to unstage)
  #
  #   modified:   testfile1
  #
  # Changes not staged for commit:
  #   (use "git add &lt;file&gt;..." to update what will be committed)
  #   (use "git checkout -- &lt;file&gt;..." to discard changes in working directory)
  #
  #   modified:   testfile1
  #   modified:   testfile2
  </code></pre>
  
  <p>When I do a <code>git stash</code>, and then do a <code>git stash pop</code>, I get</p>
  
  <pre><code># On branch master
  # Changes not staged for commit:
  #   (use "git add &lt;file&gt;..." to update what will be committed)
  #   (use "git checkout -- &lt;file&gt;..." to discard changes in working directory)
  #
  #   modified:   testfile1
  #   modified:   testfile2
  </code></pre>
  
  <p>Questions</p>
  
  <ol>
  <li>Why doesn't git stash them the way they were previously?</li>
  <li>How do I stash my changes in one go, so that on doing a stash pop, I get the older state, and not the newer one?</li>
  </ol>
  
  <p>Currently, I manually do</p>
  
  <pre><code>git stash --keep-index
  git stash
  git stash pop
  git add &lt;stashed_files&gt;
  git stash pop
  </code></pre>
  
  <p>Problem with this is</p>
  
  <ol>
  <li>It takes 5 steps to stash &amp; pop and I am looking for 2</li>
  <li>I sometimes may not remember there were 2 back to back stashes, which slightly complicates the task.</li>
  </ol>
  
  <p>Edit - I would prefer a command line solution, since I work in a similar fashion on test servers.</p>