title: How do I get the changes from a branch in git without the commits?
body: <p>I'm looking for a less rubbish way of doing this:</p>
  
  <pre><code>git diff patch.DisableCreditCheck &gt; ~/patch
  patch -p1 &lt; ~/patch
  </code></pre>
  
  <p>ie. The changes from a branch as raw uncommitted changes. </p>
  
  <p>The downside of patch is that it isn't very clever; for example I often get "Reversed (or previously applied) patch detected! Assume -R[n]?" when there isn't any previous patch, it just happens that there's a set of filenames that it gets confused by.</p>
  
  <p>It'd be <em>much</em> nicer to be able to do this:</p>
  
  <pre><code>git merge --no-commit --no-ff patch.DisableCreditCheck
  </code></pre>
  
  <p>...but that leaves you in a merge state, with no obvious way to get back to being in a normal state while preserving the changes.</p>
  
  <p>Help! Any decent way of doing this?</p>
  
  <p>(This is a very useful thing to be able to do when you're sharing patches on the code youre working on; much MUCH better than having a set of patch files to pass around)</p>
  
  <p>Edit: As an example of what I'm trying to achieve, lets say we have two branches, master, and config.me. </p>
  
  <p>When I do git diff config.me > ~/patch; patch -p1 &lt; ~/patch the result is:</p>
  
  <pre><code>$ git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD &lt;file&gt;..." to unstage)
  #
  #       modified:   Web/Web.config
  #
  </code></pre>
  
  <p>This is the desired outcome... but without using patch, which doesn't work well (specifically on windows it seems incredibly bad at detecting changes that should merge perfectly, but instead it'll get confused and write out a bunch of .orig and .rej files).</p>
  
  <p>So, like I said; I want the changes from a branch <em>without the commits</em> as local <em>uncommitted changes</em>.</p>