2011-10-20 17 views
6

Occasionalmente mi trovo nella seguente situazione: Sto lavorando su ramo (ad esempio master) e sto modificando alcuni file, ma quando arriva il momento per un impegno mi rendo conto che preferirei impegnarmi in un nuovo ramo (diciamo sperimentale). In altre parole, il vecchio ramo (master) deve rimanere intatto e un nuovo ramo dovrebbe essere creato, che sarà simile a:git: Commettere il lavoro attualmente non eseguito in corso nel ramo corrente in un nuovo ramo

.. -- master -- new commit 

Qual è il modo più semplice per farlo?

Attualmente, mi impegno su un vecchio ramo, quindi creo il nuovo ramo e infine ripristino il vecchio ramo. Ma è davvero brutto.

+2

possibile duplicato di [Git: come spostare il lavoro esistente sul nuovo ramo?] (Http://stackoverflow.com/questions/1394797/git-how-to-move-existing-work-to-new-branch) – brendan

risposta

4
git checkout -b branch  # create new branch out of current head 
git add <files>    # the changes you had done in your working directory will be carried over 
git commit -m "message"  # commit! 
+0

è menzionato nella domanda "ma quando arriva il momento per un commit mi rendo conto che preferirei impegnarmi in un nuovo ramo" – COD3BOY

+0

@Sanjay - Sì e il tuo punto è? – manojlds

+0

@ user1004474 - Provalo. Entrambe le modifiche non programmate e di stage saranno presenti quando cambi ramo. – manojlds

1

E 'un po' più facile se si crea il nuovo primo ramo:

$ git checkout -b new_branch 
$ git commit 
+0

Il punto è che non l'ho pianificato in anticipo, quindi le modifiche sono state apportate per prime (e possibili alcune aggiunte all'indice con git add) e quindi ho deciso di dirigerle. – tros443

+0

@ user1004474: funziona ancora. Puoi eseguire un 'git checkout -b new_branch' indipendentemente dal fatto che tu abbia delle modifiche e se siano state aggiunte all'indice oppure no. – hammar

+0

Sì hai ragione – tros443

0

Un'altra possibilità è per voi di andare avanti e di impegnarsi al ramo master, quindi tagliare un altro ramo della nuova HEAD (per esempio, feature). Una volta eseguita questa operazione, è possibile impostare il master git reset nella posizione precedente ai commit.

+0

Ok, non hai letto il 'Attualmente, mi impegno su un vecchio ramo, quindi creo il nuovo ramo e infine ripristino il vecchio ramo. Ma questo è davvero brutto, allora. – manojlds

+0

Sì. Ho perso questo. Non penso che sia brutto anche se FWIW. –

+0

Ottenere lo rende facile da fare, ma è brutto IMO – manojlds

Problemi correlati