Fare modifiche minori altrove mentre si lavora su un commit [duplicato]

4

Ho l'abitudine di apportare costantemente piccole modifiche al mio codice ogni volta che trovo qualcosa che non mi piace, sia che si tratti di un bug o di qualche pezzo di codice sciatto che vedo come migliorare. Sviluppo guidato dalla nevrosi.

Il problema è che questa abitudine non funziona bene con VCS. Posso lavorare su una nuova funzione e, al termine, ho 10 modifiche non correlate in diverse parti del codice (di solito nello stesso file). Sono rimasto con tre opzioni:

  • Ogni volta che voglio apportare una modifica minore, passa a work branch, esegui il commit, passa a master , apporta la modifica minore, commit, torna a work .
  • Sentiti libero di modificare quanto voglio, quindi impegnare tutto insieme. Ma mescolare concettualmente diverse modifiche in un commit è una cattiva pratica.
  • Come sopra, ma quando arriva il momento del grande commit, prova a sbrogliare le modifiche con strumenti come git add --patch e impegnali separatamente

Qualsiasi di queste opzioni mi fa venir voglia di rinunciare a VCS qualunque. C'è una quarta opzione che non vedo o è una delle precedenti non così male come sembra?

    
posta 0x60 13.04.2016 - 17:51
fonte

2 risposte

5

Utilizza git add --patch subito dopo aver apportato la modifica. Fai molti piccoli commit ogni volta che hai un passo significativo. Successivamente è possibile rebase e schiacciare i commit relativi insieme. È molto più facile utilizzare rebase per unire più commit in uno rispetto a dividere un diff in più commit.

    
risposta data 13.04.2016 - 18:03
fonte
1

Ecco cosa faccio:

  1. Rimani disciplinato, apporta solo le modifiche applicabili al ramo di lavoro corrente.
  2. Crea un ramo fuori da master chiamato MyDevBranch .
  3. Crea un ramo fuori da MyDevBranch che indirizzi una funzionalità / funzionalità specifica ( MyFeatureBranch ).
  4. Fai molti e molti commit ... Ogni volta che finisco parte di una caratteristica che si rivolge ad alcuni aspetti di quella caratteristica faccio un commit a MyFeatureBranch (cioè scrivi un metodo o crea uno stub di metodo non implementato).
  5. Quando avrò finito l'intera funzione, unirò MyFeatureBranch a MyDevBranch .

Questo ha funzionato per me finora, quando avrò completato tutti e 5 questi passaggi, unirò MyDevBranch a master . Quindi push my master si dirama verso un repository nudo sul nostro server, dove si fonde con il master esistente.

Se ti capita di apportare alcune modifiche e non vuoi integrarle subito, puoi anche stash delle modifiche poi pop più tardi .. Vedi questo link qui.

Forse controlla anche questa domanda che qualcuno ha chiesto riguardo alla memorizzazione di qui .

Ero esattamente come all'inizio, finché non ho letto altro su Git e ho fatto delle domande per vedere cosa stavano facendo gli altri.

    
risposta data 13.04.2016 - 18:33
fonte

Leggi altre domande sui tag