A common problem I run into is I set up a GitHub, TODO on the README.MD, etc, and get 10 or so commits in. Then things get muddy and unclear, and when I'm stabbing in the dark trying to hack things to work, I really really really don't want to commit it without having a clear plan in mind. That also means I can't go ahead and use/ test the implementation (which might be necessary to test the validity of the implementation, and whether a refactor is required), so I get stuck and just stop working on the thing entirely.
Another thing is I always dilly-dally with frameworks, etc. I've put off building a personal website for about a year because I've bounced between Elm, Mithril.JS, Blazor, Laravel etc. I'll start up with one, run into a wall, and give up because I don't want to do things 'suboptimally'.
Anyone else experiecne this? How do you overcome it?
For a project, i nearly always start by writing a document to explain myself what i want to do, if the project is for learning or prod, etc. when the project is enough defined to stat producing something, i git it.
For your other question, I think it really depends on your goals. If you do not want to create anything but test/learn a bit/move to something else, it's fine. If you want to focus on something it's fine too. i'm not sure you have to overcome anything, it really depends on "why are you doing side projects ?"
The first one seems to be a lack of version control hygene? just work the way you normally would at work, if you know you're doing exploritory coding then make a branch, commit the WIP if you have to and rebase / squash clean up the history later.
The second problem you can overcome by deciding what you want to get out of a side project, if it's purely for learning a new framework then approach it with that goal in mind, explore the tools the framework gives you for solving common development tasks, compare with other frameworks but don't expect to have a fully working functional side project from this process. If you want to make a new personal website then approach it with that goal in mind, which usually would mean using a stack you're familiar with.
As for your initial question, yes I always use git, for everything. I've been burnt in the past and learned my lesson the hardway.
This is the core of your problem. Having commits that show exploratory work you've done is useful, especially having a record of paths you went down that you later decided against. Do whatever it takes to change your mindset. Maybe make a toy repo and do a bunch of ridiculous commits to loosen yourself up.