2009-08-29 22 views

Respuesta

149

Puede simplemente ingresar a la rama de prueba y luego confirmar. No pierde sus cambios sin compromiso cuando se muda a otra sucursal.

suponiendo que usted está en la rama principal:

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

No estoy realmente seguro de los archivos borrados, pero supongo que no se incluyen cuando se utiliza git add .

+11

A veces el el proceso de pago fracasará porque los cambios entran en conflicto con esa rama. Puede intentar realizar la compra -m para fusionarse. –

+1

Los archivos eliminados se pueden administrar cuando 'git -u add .' –

+2

Intenté esto pero recibí un error: error: Sus cambios locales a los siguientes archivos se sobrescribirán con el pago y envío. Por favor, comprometa sus cambios o guárdelos antes de poder cambiar de rama. – ishwr

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

+1 por simple simplicidad –

194

También puede crear una nueva rama y el interruptor a él haciendo:

git checkout -b new_branch 
git add . 

yo uso esta todo el tiempo porque siempre olvido para comenzar una nueva rama antes de que comience la edición de código.

+13

+1 respuesta más corta y simple. –

+2

mismo problema que @jouni notado para la otra respuesta: puede encontrarse con dificultades para fusionar la rama nuevamente en el maestro si los cambios adicionales entran en conflicto con los cambios originales. IMO este hilo responde mejor a la pregunta: http: // stackoverflow.com/questions/556923/git-how-to-fusion-my-local-working-changes-into-another-branch – jpwynn

+0

Corto, dulce y tranquilizador ... "Uso esto todo el tiempo ..." –

35

¿Por qué no usar git stash? Creo que es más intuitivo que copiar y pegar.

$ git branch 
    develop 
* master 
    feature1 
    TEST 
$ 

Tiene algunos archivos en su rama actual que desea mover.

$ 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 
$ 

Mover a la otra rama.

$ git checkout TEST 

y aplicar

$ 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 
# 

También me gusta git stash porque uso git flow, que se queja cuando se desea acabado una rama de la característica mientras que tener cambios todavía en su directorio de trabajo.

Al igual que @Mike Bethany, esto me pasa todo el tiempo porque trabajo en un nuevo problema y me olvido de que todavía estoy en otra sucursal. Para que pueda esconder su trabajo, git flow feature finish... y git stash apply en la nueva rama git flow feature start ....

+2

'git stash' es mi forma preferida de tratar los cambios no confirmados. Sin duda es un método intuitivo cuando lo piensas como cortar y pegar. –

+0

Este parece ser un buen enfoque para mí. Funcionó sin problemas. –

+0

No sabía que podía hacer esto y funcionó bien. Se siente un poco más intuitivo que los otros métodos. – glaucon

Cuestiones relacionadas