Ну первое что приходит в голову, это использовать git
Вы просто выполняете команды git команды где-то у себя в программуле
К примеру, вам нужно сделать бэкап в программе и вы делаете что-то типа
ProcessStartInfo psi;
psi = new ProcessStartInfo("cmd", $"git commit -a -m { backup_name }");
Process.Start(psi);
Можно будет просматривать через diff изменения
Через .gitignore настроить отслеживаемые файлы
По-моему очень здравое решение