La ragione più importante per fare commit frequenti, piccoli e significativi è aiutare la comprensione della storia del codice. In particolare, è molto difficile capire come il codice sia cambiato se è difficile generare differenze comprensibili.
L'opzione 1 offusca la cronologia delle modifiche apportate, ma altrimenti non causerà alcun problema.
L'opzione 2 offusca la cronologia delle modifiche apportate, forse un po 'meno dell'opzione 1, ma potrebbe causare altri problemi a te stesso o ad altri se presumono o comunque concludono che i commit sono distinti , per esempio può essere unito in altri rami in modo indipendente. A meno che non ci sia un strong motivo pratico per cui questo è preferito rispetto all'opzione 1, questo è meno ideale di quello.
L'opzione 3 è la migliore, a parità di tutti gli altri, ma se, come hai descritto altrove, fare ciò richiederebbe "estreme" quantità di tempo o incorrere in altri costi significativi, devono soppesare tali costi rispetto ai benefici attesi dalla creazione di un impegno più pulito.
In base alle informazioni che hai fornito, opterei per l'opzione 1. Forse dovresti impostare dei promemoria che ti richiedano di confermare le modifiche?
Prototipazione e riscrittura
Un'altra considerazione da tenere a mente, specialmente alla luce della tua nota sull'essere l'unico programmatore, e il mio sospetto che tu stia lavorando su una base di codice relativamente nuova, è che probabilmente è buono sviluppare abitudini diverse rispetto a commettere modifiche per quando si sta prototipando un nuovo codice contro il mantenimento o l'estensione del codice esistente. Probabilmente non c'è una divisione terribilmente strong tra i due, ma penso che sia ancora una distinzione utile.
Durante la prototipazione del nuovo codice, esegui il commit ogni volta che desideri salvare le modifiche, quasi certamente in un ramo, ma forse in un progetto separato. O forse anche solo lavorare al di fuori del controllo della versione. Puoi invece concentrarti sulla raccolta di prove sulla fattibilità di varie ipotesi o progetti che stai considerando. Spesso scrivo piccoli prototipi utilizzando diversi strumenti, ad es. LINQPad anziché Visual Studio per il codice C #.
Quando hai convalidato una particolare ipotesi o progetto, riscrivilo nel tuo progetto principale, idealmente in una succursale, e realizza i piccoli e significativi commit che aiuteranno meglio la comprensione degli altri (incluso il futuro) della natura delle modifiche che stai apportando.