I think squashing is useful for a feature branch whose history looks like:
1d9322f Added model & migration for feature x
3fa93f9 Unit tests for feature x
38ce239 Fixed intermittent failure in test_feature_x_foo
6728eca Added view and css for feature x
8fed23d Added missing background image for feature x
392ea84 Refactored feature x controller to handle foobaz
Instead of littering the master branch with those 6 commits, wouldn't it be nice to have just:
84fac31 Added feature x with tests and support for foobaz
This has the advantage of
1) Less noise in history, so easier to page through and see what has happened
2) The feature is in a single commit, so I can more easily cherry-pick it into a release branch if I need it
3) Impressing your co-developers as it looks like you got it right the first time
1) Less noise in history, so easier to page through and see what has happened
2) The feature is in a single commit, so I can more easily cherry-pick it into a release branch if I need it
3) Impressing your co-developers as it looks like you got it right the first time