I basically use the model described in this gist and dislike the fact that our review history is basically lost when we rebase to fix the commits. Rather than &quot;what actually happened&quot;, we prefer logical commits so that when you run `git blame`, you can see a commit that makes sense rather than &quot;WIP&quot;. What we really want is a code review system that has _changesets_ so that we can keep our git history clean, but also have a full history of our code review. I&#x27;m really surprised that in all of these GitHub discussions, there hasn&#x27;t been much raised about their insufficient code review system.