The author might enjoy `git rebase -i main`, which allows reordering, renaming, combining or pretty much everything in your own branch before you rebase and merge it to the main branch.
That way even if a commit message is not clear or you added an improvement to an earlier commit, you can reduce the clutter a lot before sending out for code review, while still having individual commits for different parts of the code change