In the general case, I agree; rebases do lose a bit of context. As a code reviewer, however, I find the reason I most often ask for a rebase &amp; squash is that the &quot;context&quot; that I&#x27;m asking to lose is simply the author isn&#x27;t taking the proper time to think about what he or she is doing, and it shows, in commit messages like,<p><pre><code>  * I can&#x27;t spell
  * fix tests, too, lol
  * fixed for real
  * fixed
  * minor touchup
  * Implement feature foobar from issue #123
</code></pre>
Once the code review has completed, this history is not going to ever be useful again; worse, it impedes someone looking through the logs for useful history, and other operations like cherry-picking this feature to a branch.