2011-01-29 9 views
5

Eventuali duplicati:
Git - Create a branch with current changessarà la creazione di un ramo git cancellare i miei cambiamenti locali

Ho fatto un sacco di lavoro sul mio progetto, che mi rendo conto che si sarebbe dovuto fare in un altro ramo. Se creo un ramo ora, i miei cambiamenti attuali devono essere registrati, o saranno cancellati quando viene creato il nuovo ramo? Sono piuttosto nuovo di GIT e sto solo cercando di evitare di fare un errore newbie.

+2

Correlati: http://stackoverflow.com/questions/389962 7/git-create-a-branch-with-current-changes – Dogbert

+1

Hai commesso le modifiche nel ramo attuale o sono semplicemente nella tua copia di lavoro? –

+0

Le modifiche si trovano solo nella mia copia di lavoro. – Nippysaurus

risposta

7

Se si crea un nuovo ramo dalla testa corrente mediante:

$ git checkout -b newbranchname 

Poi non verrà sovrascritto modifiche.

+1

Abbastanza corretto, purché l'OP non abbia ancora effettuato alcuna modifica al ramo sbagliato. La cosa importante da capire è che un ramo è semplicemente un puntatore a un commit, quindi quando lo fai, tutto ciò che stai facendo è creare un nuovo puntatore al commit corrente e controllarlo - ma poiché è lo stesso commit, non è necessario toccare il tuo albero di lavoro. – Cascabel

1

Saranno trasferiti nella nuova filiale. Ma se non ti senti sicuro, puoi sempre fare prima un backup della directory del progetto locale.

+5

No, non verranno spostati da nessuna parte. Forse sembro pedante, ma pensarlo come questo potrebbe rovinare il tuo istinto su questo e altri comandi. – Cascabel

+0

Diciamo solo che le modifiche saranno visibili nel nuovo ramo. – jeremyjjbrown

2

Nel vostro caso, la risposta di bdonlan si applica, poiché la creazione di un nuovo ramo non tocca la directory di lavoro.

In casi più generali, Git avviserà e interromperà se si tenta di cambiare ramo con le modifiche delle directory di lavoro ancora presenti. In ogni caso è positivo non perdere i cambiamenti.

In questi casi, per spostare il commit modifiche alla directory di lavoro per un nuovo ramo, primo salvataggio alla scorta Git:

git stash save 

Quindi creare e nella verifica che si diramano:

git checkout -b new-branch-name 

poi pop la directory di lavoro cambia dalla scorta Git:

git stash pop 
+1

Questo non ha senso: se stai creando il nuovo ramo dal tuo HEAD attuale, non c'è mai bisogno di scartare. – Cascabel

Problemi correlati