title: How to incrementally merge large branches with Git?
body: <p><strong>Overview:</strong></p>
  
  <p>We have a fairly large (~10M LOC) repository that we want to handle with Git. We need to do complicated merges between development branches that are too big to do in one shot. However, it appears Git does not support this. After you commit a "merge" between two branches, Git assumes <em>all</em> the files on those branches have been addressed. What is the best workflow to incrementally work on a huge merge?</p>
  
  <p><strong>Background:</strong></p>
  
  <p>We want to distribute the work over several commits and several developers. The code base is being actively updated by different teams via independent CVS repos. So the work on their branches are just tarball code drops with no commit history between drops.</p>
  
  <p>Our plan was to store the drops on different branches like this:</p>
  
  <p>Master : Rel 1 -> Rel 2</p>
  
  <p>Site B :   \ -> Rel 1.1</p>
  
  <p>Our team is intended to do work similar to Site B, but Site B may continue to work in parallel. So we will keep the "Master" and "Site B" branches untouched for future imports. We will create a new development branch for our work. The first step being merging the difference between "Rel 1" and "Rel 2" onto the Rel 1.1 work. Essentially a 3-way merge between the "Master" and "Site B" branches.</p>
  
  <p>Doing individual merge-file operations seems clunky and doesn't preserve any actual history. Similar with doing cherry-picks.</p>
  
  <p>Any advice?</p>