2012-05-22 20 views
9

Sto utilizzando git-flow per i miei progetti e ho avviato una serie piuttosto complessa di modifiche nel ramo di sviluppo, che sembra richiedere più tempo di quanto mi aspettassi prima.Spostare le modifiche apportate nel ramo di sviluppo in un nuovo ramo di funzionalità git-flow?

Vorrei averlo fatto in un reparto funzionalità, poiché mi piacerebbe fare una nuova versione con altre modifiche. Come posso spostare queste modifiche non salvate in un nuovo ramo di funzionalità git-flow?

risposta

17

Se hai fatto non impegna

Se avete semplicemente una copia di lavoro sporco, proprio agire come si sta per iniziare una nuova funzione:

git flow feature start awesomeness 
git commit -va 

Se fatto effettua alcuni commit

Se ci sono commit in fase di sviluppo che avrebbero dovuto essere nel proprio branch funzionalità, il precedente punto l'eps è lo stesso. Inoltre se si (forse - questo non è richiesto) vuole ripristinare il ramo di sviluppare di nuovo a dove era prima di iniziare commettere le modifiche per il vostro ramo di caratteristica, che si può fare con:

git flow feature start awesomeness 
git commit -va 
git checkout develop 
git reset origin/develop --hard 
+0

Non sapevo che la funzione potesse essere avviata dopo le modifiche senza commit. Grazie! – plang

2

Ecco un modo per farlo:

git checkout where-you-should-have-made-your-feature-branch 
git branch feature-branch 
git checkout feature-branch 
foreach commit in commits-that-should-have-been-on-your-feature-branch: 
    # do this for each commit in chronological order 
    git cherry-pick commit 

Ora dipende dal fatto che si è già spinto la filiale di sviluppare a un repository pubblico o meno. Se tutto è ancora privata, e si vuole riscrivere la storia:

git checkout develop-branch 
foreach commit in commits-that-should-have-been-on-your-feature-branch: 
    # do this for each commit in reverse chronological order 
    git rebase --onto commit~1 commit develop-branch 

Se non si vuole riscrivere la storia:

git checkout develop-branch 
foreach commit in commits-that-should-have-been-on-your-feature-branch: 
    # do this for each commit in reverse chronological order 
    git revert commit 

E che dovrebbe farlo.

+0

git rebase in un loop sembra un po 'inutile/goffo - qual è l'idea lì? – AD7six

+0

Ciao, grazie per la tua risposta, ma nulla era stato ancora commesso. La soluzione era più facile di così. – plang

Problemi correlati