@cleverthis @freemo I would heavily recommend looking into git-compatible tools like jujutsu that let you tinker first and commit later without all the mental overhead required to pre-plan your commits in advance. Sometimes as you go down the rabbit hole when fixing an issue or adding a feature, the easiest thing to do is finish and worry about organization afterwards and tools like jujutsu, (and pijul/DARCS) give you more flexibility than hit in this regards (and it’s easier to keep track of and keep a clean history IMO).
@freemo @cleverthis Basically, each change you make is logged as a micro-commit, and once you reach a state that you're happy with the current progress, you simply quash the micro commits into commits based on whatever best practices you prefer. In git, such a set of operations would be a nightmare, but jj uses first-class conflicts and a pseudo-theory-of-patches to make this the default way of interacting with your repo, and I have to say I much prefer it. And the fact that any valid jj repo is also a valid git repo means way less overhead in terms of integrating with your existing workflows.
Here's a the codebase and a few tutorial resources.
https://kubamartin.com/posts/introduction-to-the-jujutsu-vcs/
https://steveklabnik.github.io/jujutsu-tutorial/introduction/what-is-jj-and-why-should-i-care.html
Additionally, there are some Emacs extensions and CLI tools that exist. If you're interested, I'll link you :)