I tend to branch out and commit on feature basis, but then, when I merge, I do "squash & merge", which, hence the name, squashes all branch merges all together and make them a single commit. It makes history a lot clearer.
Comment by Eray Erdin on "How often do you commit your code?" | Hashnode