Come posso dividere il lavoro svolto in un ramo senza conflitti nell'unione?

5

Scenario:

Ho un ramo produzione (P) e il ramo corrente (C) che ho creato per lavorare su alcune nuove funzionalità. Alcuni di essi sono pronti, tuttavia il lavoro sul resto richiederà più tempo del previsto.

Vorrei spingere alla produzione (e fondermi con le funzioni di produzione (P) ) che sono pronte adesso, e poi continuare a lavorare sul resto di esse nella mia corrente ( C) ramo.

La mia idea:

Posso creare un nuovo ramo pre-produzione (PP) , rimuovere tutti i riferimenti al codice che non è pronto in esso e unirlo al ramo production (P) . Quindi continuerò a lavorare sulla diramazione corrente (C) e mi unisco al ramo produzione (P) quando il mio lavoro è pronto.

Problema:

Quando rimuovo i riferimenti nel ramo pre-produzione (PP) , ci saranno molti conflitti più tardi quando unisco il mio ramo corrente (C) con ramo produzione (P) . Ho paura di perdere alcuni importanti cambiamenti nel codice. Come posso farlo meglio, evitando i conflitti? La fusione è il potere di Git, quindi la mia ipotesi è che io non conosca qualcosa di importante.

    
posta rsm 07.03.2017 - 22:56
fonte

1 risposta

4

Hai fatto un errore nel tuo flusso git e niente di elegante è lì per salvarti. Invece di provare a rimuovere elementi da un ramo creato da C, la soluzione migliore è creare il ramo PP dal ramo P e cherry-pick il ramo C nel nuovo ramo PP.

git checkout production
git pull
git checkout -b pre_production
git cherry-pick ...

Perché? Nel tuo caso dovrai comunque passare il codice nel ramo C e, usando il tuo approccio, dovresti decidere cosa rimuovere e cosa stare.

La soluzione per i casi futuri, rende le tue filiali più orientate alle funzionalità, in questo modo puoi solo unire le funzionalità che desideri veramente.

    
risposta data 07.03.2017 - 23:16
fonte

Leggi altre domande sui tag