title: Git plumbing: export tree at commit without touching HEAD/index
body: <p>I'm writing a program that needs to concurrently extract different commits from the same repository (like in <a href="https://stackoverflow.com/questions/160608/do-a-git-export-like-svn-export">this question</a>, but concurrently).</p>
  
  <p>Porcelain commands such as <code>git checkout</code> and <code>git archive</code> operate on the index, thus any time a commit would need to be extracted, it would need to move HEAD and/or go through the index first.</p>
  
  <p>Is there a simple way to just dump a Git tree object into a directory on the filesystem?</p>