I concur. I usually create a separate branch, and "rebase -i" many times in order to keep changes grouped together into logically consistent units. So if I need to fix something 3 commits ago, I commit that change separately, then "rebase -i", move it down and mark it as "fixup". Sometimes after committing too many things together I mark that branch to the side, make a new branch and checkout files one at a time from that branch to make separate logical commits. It might seem like a lot of extra work, but making the changes readable to other people, and making them easy to revert as logical units, does pay benefits.
Discussion
💯 I do the same interactive rebasing before I ever push a branch off my laptop