> every commit I make is a good one that I would like to keep in the history
This is certainly not typical.
When working in a team, you may need to push something half-finished so that someone else can work on what they need to. Or testing something before refactoring.
For these scenarios, rebase is very handy for cleaning things up before merging.