I'd like to have all my files under git, for every save - and frictionless. I know it is a lot to ask.
I've been developing for many years and I can't remember the last time I ran into this problem, so you can try my approach. When I'm debugging something and unsure of my solution, I comment out the original code and put the potential replacement below. If that doesn't work, do the same. I'll sometimes have three or four potential versions. Also, I generally commit every time a task is finished. During development the tasks might be pretty granular ("implemented underlines, strikethroughs, and custom fg/bg colors for text"), but each bug fix gets its own commit ("bug-2309: text was offset incorrectly on Win32"). Between these two, I rarely run into the problem.
https://atom.io/packages/git-wip
"git-wip is a script that will manage Work In Progress (or WIP) branches. WIP branches are mostly throw away but identify points of development between commits. The intent is to tie this script into your editor so that each time you save your file, the git-wip script captures that state in git."
Depends, there's backup software for Windows that will watch for file changes and backup immediately. Usually enterprise targetted. You could certainly do that on other OSes, possibly with less nice apis; a half measure would be taking filesystem snapshots continuously or once a minute or ???.
There's filesystems you can use on cd-r/dvd-r, although that doesn't sound pleasant, that would give you the option to go back to any version.