title: git workflow: keeping inconsistent commits in history
body: <p>I'm newbie in git and I'm trying to use it as follows (AFAIK it's a quite common workflow for a single developer):</p>
  
  <ul>
  <li>Create a feature branch and do some work on it, with some WIP commits.</li>
  <li>When done, reorganize these WIP commits to well-consistent ones (those that pass compiling and testing) to have a clean history.</li>
  <li>Merge feature branch into <em>master</em>.</li>
  </ul>
  
  <p>Now I'm about migrating some of my projects (related to a single workspace, i.e. working tree) to a new version of compiler. On a feature branch <em>msvc90</em> I prepared a lot of work to be committed. I have two options know:</p>
  
  <ul>
  <li>Create a single big commit (-m "migration to MSVC 9.0").</li>
  <li>Create a number of commits to keep several steps of migration in history (creation of new project files, deletion of old ones, tuning source code to get rid of compiler warnings, bug fixing, etc.). Note that these commits cannot be well-consistent on their own (e.g. using new project file with untuned source code will result in compilation errors).</li>
  </ul>
  
  <p>My question is quite philosophical. The second option seems to be slightly preferable for me as it keeps more details in history. On the other hand I have read some git tutorials that recommend to keep well-consistent commits only (e.g. to use bisect).</p>
  
  <p>Does anyone know examples of big projects whose policy permits keeping inconsistent commits of this kind (on feature branches)?</p>