2015-05-14 14 views
5

Per il mio progetto, utilizzo git-flow. Ho il ramo master e develop sincronizzato con repository remoto Generalmente per tutte le modifiche creo un ramo feature, modifica i file, eseguo il commit delle modifiche sul ramo feature e chiudo il ramo con un'unione in develop.Sposta lo sviluppo delle modifiche in un nuovo ramo di funzionalità

Ma a volte mi dimentico di creare un ramo feature e di modificare i file direttamente in develop. Come posso spostare le canne in un nuovo ramo feature?

risposta

9

Se hai già fatto il commit a develop, e la vostra storia simile a questa:

A---B---C---D develop 

Qui, C è l'ultimo commit corretto su develop e D avrebbe dovuto essere eseguito su un ramo di funzionalità. Effettuare le seguenti operazioni (mentre su develop):

git branch feature  # creates feature branch pointing at D 
git reset --hard C  # or HEAD^, HEAD~1, etc - resets develop back to C 

questo si tradurrà in:

A---B---C develop 
     \ 
      D feature 

Questo sarà anche funzionare bene se hai fatto più di un commit, come si può sostituire a seconda di quale si impegnano di riferimento è necessario reimpostare develop nel secondo comando.

1

Supponendo che già commesso questi cambiamenti a livello locale e non si è ancora spinto, è possibile utilizzare un soft reset:

git reset --soft HEAD~1 
git checkout feature 
git commit 

Basta sostituire l'1 in git reset --soft HEAD~1 con il numero di commit si desidera soft reset.

1

è possibile utilizzare git scorta per mettere le modifiche una nuova filiale, vedere git book

Così in master, dopo aver fatto le modifiche (ma non aggiunge o commetti) si potrebbe fare:

git stash //stashes the changes 
git stash branch featurebranchname //creates a new branch and applies the stash to it 
+1

Non è chiaro dalla risposta che è necessario eseguire 'git stash' prima di eseguire il comando' git stash branch'. –

+1

Grazie mille, ho controllato e modificato la mia risposta. – wmk

-2

È possibile selezionare le modifiche al nuovo ramo.

Problemi correlati