Save everything!
Why not have a process listening to your development folder and stash every change (except bin, obj, cache etc.)?
This way one can roll back and forth throughout a whole day or week or even month to find the spot where something worked or something was changed.
Name the stashes in such a way that a nice little GUI can list the stashes and some some more information, like which files were touched.
Praise where praise is due: Rider from Jetbrains has it.
Since they provide the IDE they can do some clever thinking about how to group changes. With a file listener it is hard to tell if 2 file change close in time is one or two changes. Nevertheless; it doesn’t have to be perfect. Stashing every change takes you a long way to finding that change that ruined your day.