Il mio approccio personale a un commit Git è che ogni commit dovrebbe includere una unità di cambiamento , nella sua completezza.
Quando sviluppo, di solito mi concentro su tali unità. Ma a volte, la mia attenzione si allontana da qualche altra parte e io lavoro per un po 'su un'altra unità. Questo probabilmente non è ottimale, ma ho imparato a impegnarmi attentamente ( git add --interactive
è un mio buon amico).
Tuttavia, potrebbe accadere che io dimentichi di mettere in scena selettivamente le mie modifiche e invece impegni l'intero file, credendo che tutte le modifiche che vedo nel diff siano effettivamente correlate alla stessa unità, anche se potrebbero esserci dei cambiamenti o due completamente non correlato.
Quindi I git push
.
È pericoloso? Devo fare uno sforzo per modificare il commit in modo che includa solo le modifiche previste? La mia preoccupazione principale è che chiunque guardi la storia vedrà il cambiamento e probabilmente si gratterà la testa per diversi minuti prima di rendersi conto che è molto probabilmente un errore. Peggio ancora, posso immaginare che il cambiamento sembrerà anche relativo e il programmatore potrebbe non riconoscere l'errore.
Il problema è che, poiché ho già spinto, non posso tranquillamente riscrivere la cronologia del server, quindi probabilmente dovrei prima ripristinare il commit, dividerlo correttamente e eseguire nuovamente il commit. In alternativa, potrei semplicemente modificare il commit con un messaggio di commit migliore, ma dovrei essere davvero molto veloce poiché richiede anche la riscrittura della cronologia. Come ultima risorsa, potrei semplicemente impegnare l'unità su cui stavo lavorando come dopo, lasciando una nota che c'è un cambiamento relativo nel commit precedente (ma questo sembra sbagliato).
Comprendo che in una configurazione multi-sviluppatore con un flusso di lavoro appropriato per la revisione del codice questo probabilmente non accadrà. Capisco anche che se io sono l'unico sviluppatore di un progetto, quindi la riscrittura della cronologia è la soluzione migliore per questo.