2009-09-25 24 views
8

A veces estoy en una rama de características, pero he hecho un cambio no relacionado que quiero ver en el máster. A menudo, sólo puedo hacer:Cambiando ramas en git

git checkout master 
git commit -m "..." filename 

Pero a veces cuando lo haga el pago y envío recibo una advertencia de que hay cambios locales y por lo tanto no pueden cambiar la rama.

¿Por qué esto solo pasa a veces? ¿Hay alguna solución cuando veo este mensaje? Tal vez escondite?

Respuesta

15

Como mencionó Devin Ceartas, esto sucede cuando cambiar de rama podría cambiar algún archivo que ya ha cambiado localmente. (Git no se quejará cuando se tiene cambios locales en un archivo que no se pueden cambiar o añadir nuevos archivos que existen en la rama ni ni amo.)

Dos maneras de evitar esto:

  1. "git stash" tus cambios, cambia a master, y "git stash apply". Entonces comete el cambio.

  2. Realice los cambios que desee en la bifurcación, luego "git stash" cualquier otro cambio (si hay alguno), cambie a maestro y seleccione el cambio en el maestro.

+5

Cuatro formas: 3. siempre puede intentar hacer una fusión de 3 vías con "git checkout -m", y 4. puede forzar el pago (perdiendo sus cambios) con "git checkout -f". –

0

He visto esto también. Creo que el problema es cuando los cambios locales cambiarían con algo en la otra rama (a diferencia de un nuevo archivo que no está en la otra rama). Siempre puede verificar la otra rama en un directorio diferente.

+0

¿Cómo se puede verificar otra rama en un directorio diferente? –

+0

Busque ayuda en git-new-workdir, que le permite crear un nuevo directorio de trabajo respaldado por el mismo repositorio. – Phil

+0

Veo, es un script en contrib/workdir en el git git repo. ¡Gracias! –