title: Using `git show` to create and apply patches spanning multiple commits
body: <p>Lately I've been using <code>git show &lt;hash&gt;</code> to create diffs for later reference because it's easier to type than <code>git diff &lt;hash&gt;~ &lt;hash&gt;</code> and it shows the commit information (timestamp, user, hash, comment). You can then use <code>git apply &lt;filename&gt;</code> to apply the patch.</p>
  
  <p>I discovered that <code>git show -3</code> will show the last three commits along with the same extra information. However, <code>git apply</code> will squash it all into the working directory as unstaged changes, and loses all the commit information.</p>
  
  <p>Is there something in git that will apply all that information? It would be a lot simpler to just pass in a flag than breaking the patch up into three files, applying them severally, and creating new commits.</p>