The right use is to allow me to make crappy, random commits on my own feature branch, clean them up those commits when I'm ready to release the change.
And the commit description will describe what's going on.
The key is that my feature branch is not long-lived - only a day or two, long enough for me to make a step forward before merging it back into mainline and then starting on the next step.