2013-05-28 9 views
5

Quali opzioni avete per "annullare" un ramo di funzione? Supponiamo che tu aggiunga una nuova funzionalità supercool-feature che hai terminato (unisci in sviluppo ed elimini il ramo della funzione) e poi entri in una versione. Ma i tuoi utenti non amano molto questo supercool-feature. Come posso annullare/riavvolgere/annullare questa funzione che è già stata integrata nello sviluppo e in una versione?Git-Flow annulla un ramo di feature finito

Sto utilizzando SourceTree per eseguire il mio controllo delle versioni.

+1

Ebbene si ripristina l'unione ... Ovviamente è un po ' più complesso di così, ma il dettaglio risiede nel modo in cui organizzi il tuo codice e i tuoi test, ecc. Ho la sensazione che ci sia di più in questa domanda. –

+0

Anche questa non è una domanda specifica per git-flow. Ciò che ha fatto per te il flusso git è creare il tuo ramo di funzionalità da sviluppare e quindi fonderlo nuovamente in sviluppo. Non ci sono cose magiche in corso in git-flow, è tutto solo git. –

+0

@AlexBrown quindi come faccio a ripristinare l'unione? Non sono sicuro che tu abbia familiarità con il funzionamento del processo git-flow. Ma quando finisci una funzione in git-flow, viene unita a un ramo "di sviluppo" e quindi il ramo della funzione viene eliminato. Quando decidi di fare una versione, crei una nuova diramazione dallo sviluppo e apporti le tue modifiche specifiche per la versione e poi le unisci in "master". Quindi, come potrei ripristinare la 'funzione supercool 'che è stata unita allo sviluppo? –

risposta

12

eseguire questo comando

git revert -m 1 <sha1 of M> 

Spiegazione

La vostra situazione è circa la seguente:

A-B-----C---D-M  # master 
    \  /
    X-Y---Z-  # supercool-feature 

A, B, C e D erano in il tuo reggiseno nch, X, Y e Z nel tuo ramo delle funzionalità. Quando hai fatto git merge supercool-feature Git ha creato un "merge commit" M per te. Questo commit racchiude tutti i commit dal tuo branch feature e le possibili correzioni per risolvere i conflitti di merge. Pertanto, se si esegue il commit di revert, tutte le modifiche apportate al featurebranch verranno annullate di nuovo.

+1

+1 per fare lo sforzo artistico ASCII :) – bigge

+0

diavolo avvocato: come fa a rimuovere tutto dalla funzione di supercool XZY, e non tutto da master (CD)? l'unione è simmetrica ... – mnagel

+0

Le unioni non sono simmetriche. 'git merge' guarda il changeset dal ramo da unire (' git diff B ..Z') e lo schiaccia in un unico commit. –

1

realtà il comando è

git revert -m 1 <sha1 of M> 

che rimuovono M arretramento sul ramo contenente X, Y, Z che non è la linea principale 1.

Problemi correlati