2009-08-29 7 views

risposta

149

È possibile effettuare il checkout al ramo di test e quindi eseguire il commit. Non si perdono le modifiche non modificate quando si passa a un altro ramo.

Supponendo siete al ramo principale:

git checkout test 
git add . 
git add deletedFile1 
git add deletedFile2 
... 
git commit -m "My Custom Message" 

io non sono davvero sicuro sui file cancellati, ma immagino che non sono incluse quando si utilizza git add .

+11

A volte il il checkout fallirà perché le tue modifiche sono in conflitto con quel ramo. Puoi provare check -m per unire. –

+1

I file cancellati possono essere gestiti quando si esegue 'git -u add .' –

+2

Ho provato a farlo ma ho ricevuto un errore: errore: le modifiche locali ai seguenti file sarebbero state sovrascritte dal pagamento. Per favore, commetti i tuoi cambiamenti o mettili da parte prima di poter cambiare ramo. – ishwr

5
git checkout TEST 
git add file1 file2 
git commit 
+1

+1 per semplicità nuda –

194

Inoltre è possibile creare un nuova filiale e l'interruttore ad esso facendo:

git checkout -b new_branch 
git add . 

io uso questo tutto il tempo perché mi dimentico sempre di avviare un nuovo ramo prima di iniziare la modifica del codice.

+13

+1 risposta più breve e più semplice. –

+2

lo stesso problema di @jouni rilevato per l'altra risposta: puoi incontrare difficoltà nel fondere il ramo in master se ulteriori modifiche sono in conflitto con le modifiche originali. IMO questo thread risponde meglio alla domanda: http: // stackoverflow.it/questions/556923/git-how-to-merge-my-local-working-changes-into-another-branch – jpwynn

+0

Breve, dolce e rassicurante ... "Lo uso sempre ..." –

35

Perché non usare solo git stash. Penso che sia più intuitivo come un copia-e-incolla.

$ git branch 
    develop 
* master 
    feature1 
    TEST 
$ 

Si dispone di alcuni file nel ramo corrente che si desidera spostare.

$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
#  modified: awesome.py 
# 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# 
#  modified: linez.py 
# 
$ 
$ git stash 
Saved working directory and index state \ 
    "WIP on master: 934beef added the index file" 
HEAD is now at 934beef added the index file 
(To restore them type "git stash apply") 
$ 
$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ 
$ 
$ git stash list 
[email protected]{0}: WIP on master: 934beef ...great changes 
$ 

Spostarsi all'altro ramo.

$ git checkout TEST 

e applicare

$ git stash apply 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# 
#  modified: awesome.py 
#  modified: linez.py 
# 

Mi piace anche git stash perché io uso git flow, che si lamenta quando si vuole finitura un ramo di caratteristica pur avendo cambiamenti ancora nella directory di lavoro.

Proprio come @Mike Bethany, mi succede tutto il tempo perché lavoro su un nuovo problema dimenticando che sono ancora su un altro ramo. Quindi puoi stash il tuo lavoro, git flow feature finish... e git stash apply nella nuova filiale git flow feature start ....

+2

'git stash' è il mio modo preferito di gestire le modifiche non salvate. È certamente un metodo intuitivo quando lo si considera come copia e incolla. –

+0

Questo mi sembra un buon approccio. Ha funzionato senza problemi. –

+0

Non sapevo che potevi fare questo e ha funzionato bene. Sembra un po 'più intuitivo rispetto agli altri metodi. – glaucon