Przez VS nie wiem, ale ogólnie jest możliwość zautomatyzowania wysyłki commitów za pomocą choćby Jenkinsa czy crona, które uruchamiają się co jakiś czas. Wtedy miałbyś jednak ten problem, że nie mógłbyś opisać dokładnie jakich zmian dokonałeś.
Git jest po to żeby organizować pracę nad kodem, a nie być kopią zapasową kodu robioną co X minut.
Moim zdaniem nie do końca. Git też jest formą backupu, a jeśli masz jakiegoś Jenkinsa, który odpala się przy każdym pushu do mastera, to warto rozważyć pushowanie do feature brancha. Dopiero przy merge'u do mastera możesz sobie zesquashować wszystkie commity z feature brancha, by mieć z tego jeden commit i uruchomić całą machinę CI/CD.
Ostatnio zmieniałem architekturę autorskiego frameworka i ten proces trwał kilkanaście dni. Nie wyobrażam sobie, by w tym czasie nie zrobić ani jednego commita i pod koniec pracy utracić kod na skutek awarii komputera.
Swoją drogą jak sobie obserwuję konta na Githubie z dużą aktywnością, to ludzie robią tam commity obejmujące bardzo małe zmiany, np. https://github.com/kamranahmedse/developer-roadmap/commits/master. Użytkownik wydaje się być dość popularny wśród programistów, pomimo że używa gita niezgodnie ze sztuką.