title: How do I remove the old history from a git repository?
body: <p>I'm afraid I couldn't find anything quite like this particular scenario.</p>
  
  <p>I have a git repository with a lot of history: 500+ branches, 500+ tags, going back to mid-2007. It contains ~19,500 commits. We'd like to remove all of the history before Jan 1, 2010, to make it smaller and easier to deal with (we would keep a complete copy of the history in an archive repository).</p>
  
  <p>I know the commit that I want to have become the root of the new repository. I can't, however, figure out the correct git mojo to truncate the repo to start with that commit. I'm guessing some variant of </p>
  
  <pre><code>git filter-branch
  </code></pre>
  
  <p>involving grafts would be necessary; it might also be necessary to treat each of the 200+ branches we want to keep separately and then patch the repo back together (something I <em>do</em> know how to do).</p>
  
  <p>Has anyone ever done something like this? I've got git 1.7.2.3 if that matters.</p>