2010-01-21 21 views
8

Sto usando git e ho lavorato intensamente sul mio repository locale la scorsa settimana.Git big best practice

Mi piace fare molti piccoli commit (come 2 o 3 file) invece di quelli grandi, ma questa volta tra la pressione del tempo e il fatto che il cambiamento riguardava molti file, ho messo fuori gioco un sacco di file.

La mia domanda è, qual è la migliore pratica in questo scenario? C'è qualche strumento che mi permetta di dividere il lavoro in piccoli commit?

Nota che so come mettere in scena i file uno alla volta e fare le piccole impegna a mano, ma ho paura di fare un errore e creare un commit che lascia il codice in uno stato incoerente (come non compilare o lavorare male).

Grazie!

risposta

9

git add -i dovrebbe aiutare a dividere impegna a pezzi, poi git stash resto del codice, controllare se tutto funziona, git commit, git stash pop e loop.

+0

La chiave qui è 'stash' git; l'OP dice che sa già come dividere i commit, anche se si noti che '-p' (' --patch') è spesso più utile di '-i' (' --interactive'). – Cascabel

+0

Jefromi, l'OP dice che sa come mettere in scena * i file alla volta *. –

+0

Mi piace usare 'git add -i' e quindi selezionare' p (patch) 'dal menu interattivo ... in questo modo è possibile mettere in scena pezzi scelti di vari file tutto in una volta. Quindi, ricontrolla con 'git diff --cached' prima del commit. – grossvogel

2

È possibile mettere in scena una parte di un file con git add --patch. Ciò dovrebbe consentire di eseguire il commit di serie di modifiche correlate, senza impegnare altre modifiche non correlate che si verificano negli stessi file.

E se si desidera verificare l'attuale HEAD senza perdere tutto il lavoro non impegnato, git stash è tuo amico.

+1

Si noti inoltre: scorta git -p –

1

Personalmente, trovo git add -i un po 'ingombrante per lavorare con, come faccio fatica a vedere che cosa sta effettivamente facendo.

Tuttavia, git gui risulta essere abbastanza buono a per-hunk e anche per staging e staging per linea. Occasionalmente è necessario un piccolo supporto eseguendo una modifica temporanea rapida prima della staging e quindi invertendo immediatamente la modifica, ma la maggior parte delle volte git gui funziona davvero bene per me.