title: Git: Create a branch from unstaged/uncommitted changes on master
body: <p>Context: I'm working on master adding a simple feature. After a few minutes I realize it was not so simple and it should have been better to work into a new branch.</p>
  
  <p>This always happens to me and I have no idea how to switch to another branch and take all these uncommited changes with me leaving the master branch clean. I supposed <code>git stash &amp;&amp; git stash branch new_branch</code> would simply accomplish that but this is what I get:</p>
  
  <pre><code>~/test $ git status
  # On branch master
  nothing to commit (working directory clean)
  
  ~/test $ echo "hello!" &gt; testing 
  
  ~/test $ git status
  # On branch master
  # Changed but not updated:
  #   (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:   testing
  #
  no changes added to commit (use "git add" and/or "git commit -a")
  
  ~/test $ git stash
  Saved working directory and index state WIP on master: 4402b8c testing
  HEAD is now at 4402b8c testing
  
  ~/test $ git status
  # On branch master
  nothing to commit (working directory clean)
  
  ~/test $ git stash branch new_branch
  Switched to a new branch 'new_branch'
  # On branch new_branch
  # Changed but not updated:
  #   (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:   testing
  #
  no changes added to commit (use "git add" and/or "git commit -a")
  Dropped refs/stash@{0} (db1b9a3391a82d86c9fdd26dab095ba9b820e35b)
  
  ~/test $ git s
  # On branch new_branch
  # Changed but not updated:
  #   (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:   testing
  #
  no changes added to commit (use "git add" and/or "git commit -a")
  
  ~/test $ git checkout master
  M   testing
  Switched to branch 'master'
  
  ~/test $ git status
  # On branch master
  # Changed but not updated:
  #   (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:   testing
  #
  no changes added to commit (use "git add" and/or "git commit -a")
  </code></pre>
  
  <p>Do you know if there is any way of accomplishing this?</p>