title: Truncate GIT History (with 2 permanent branches)
body: <p>We have a git repository since 8/13/2013, with over 4000 commits, occupying almost 7 GB of disk space. (GIT Version: 2.9.0.windows.1)</p>
  
  <p>During these years the project evolved pretty much, so the oldest commits are no longer useful.</p>
  
  <p>As many other, we'd like to "consolidate" the history from a certain date. 
  Let's say we want to "squash" together anything older than 6 months, to become a single big commit.</p>
  
  <p>The main handicap is that we got a multi-branches structure, and obviously we want to preserve it:</p>
  
  <ul>
  <li>Master branch (perpetual)</li>
  <li>Develop branch (perpetual)</li>
  <li>Feature branches (one for each task, deleted after merging)</li>
  </ul>
  
  <p>In example,
  This is how the history looks now:</p>
  
  <p><a href="http://i.stack.imgur.com/7ONsU.png" rel="nofollow">How the history looks now</a></p>
  
  <p>This is what we need:</p>
  
  <p><a href="http://i.stack.imgur.com/yBx0N.png" rel="nofollow">What we need</a></p>
  
  <p>We tried several approaches such "Rebase", "Cherry pick", "clone" with "depth"... but nothing seems capable to do what we need.
  These are the most meaningful things I tried:</p>
  
  <ul>
  <li><p>Rebase and Cherry pick (using tortoiseGit 2.1.0.0)
  With both commands I tried to "squash" the oldest commits, but each merge results in a dialogue "which parent do you want to pick? parent1/parent2", then no matter which I pick: all files get marked as "conflict" and so they need to be resolved "manually". 
  I just can't handle all this conflicts manually (nor reproduce the same identical sequence for Master and Develop branches).</p></li>
  <li><p>Clone with depth (via Git-Bash)
  I executed this command:
  "git clone  limitedRepo --depth=1000" that correctly "squash" all older commits, but the resulting repo has only a single branch.</p></li>
  </ul>
  
  <p>So I tried this command to get back Develop branch from origin:</p>
  
  <p>"git remote set-branches origin '*'"
  "git fetch -vvv"</p>
  
  <p>but the fetched branch contains the whole history, not the "squashed" we need.</p>
  
  <p>I tried to use the same commands with different parameters, but I'm just groping.</p>
  
  <p>Any idea?</p>