Le migliori pratiche con git (o qualsiasi VCS per quella materia) dovrebbero essere che ogni commit esegua il minimo cambiamento possibile. Ma questo non corrisponde al mio modo di lavorare.
Ad esempio, di recente ho dovuto aggiungere del codice che verificasse se la versione di un plugin nel mio sistema corrispondesse alle versioni supportate dal sistema. Se non si stampa un avviso che il plugin richiede probabilmente una versione più recente del sistema. Mentre scrivevo quel codice decisi che volevo che gli avvertimenti venissero colorati. Avevo già il codice che colorava il messaggio di errore, quindi ho modificato quel codice. Quel codice era nel modulo di avvio di una voce nel sistema. Il codice di controllo del plugin era in un altro percorso che non utilizzava quel punto di ingresso, quindi spostai il codice di colorizzazione in un modulo separato in modo che entrambi i punti di ingresso potessero usarlo. Inoltre, per testare il mio codice di controllo dei plug-in funziona, devo andare a modificare il codice UI / UX per assicurarmi che indichi all'utente "Devi aggiornare".
Quando tutto è detto e fatto ho modificato 10 file, cambiato le dipendenze, i 2 punti di ingresso ora dipendono entrambi dal codice di colorizzazione, ecc. ecc. Essendo pigro probabilmente sarei solo git add . && git commit -a
del tutto. Trascorrere 10-15 minuti a provare a manipolare tutte queste modifiche in 3 o 6 commit più piccoli sembra frustrante e questo solleva la domanda
Esistono flussi di lavoro che funzionano per te o che semplificano questo processo?
Non penso di riuscire a modificare magicamente qualcosa nell'ordine perfetto, dal momento che non conosco quell'ordine fino a quando non comincio a modificare e vedere cosa succede.
So che posso git add --interactive
etc ma sembra, almeno per me, un po 'difficile sapere cosa sto afferrando esattamente le modifiche corrette in modo che ogni commit funzioni effettivamente. Inoltre, poiché le modifiche sono contenute nella directory corrente, non sembra che sarebbe facile eseguire test su ciascun commit per assicurarsi che funzionerà a corto di tutte le modifiche. E poi, se si dovesse mettere da parte e poi eseguire i test, se mi fossi perso qualche riga o avessi aggiunto per sbaglio qualche trentina di righe, non ho idea di come avrei recuperato facilmente da quello. (come in entrambi prendere le linee mancanti dalla scorta e poi mettere il resto indietro o prendere le poche linee extra che non avrei dovuto afferrare e inserirle nella memoria per il prossimo commit.
Pensieri? Suggerimenti?
PS: spero che questa sia una domanda appropriata. La guida dice metodologie di sviluppo e processi