git-absorb is a great tool for crafting atomic commits. Given some uncommitted
changes, it automates the process of identifying which commit to squash each
change into. The workflow is simply:
$ vim # address code-review feedback $ git add $CHANGED_FILES $ git absorb --and-rebase
There’s an excellent elevator pitch on the project README.