2011-01-29 10 views
5

Duplicar posibles:
Git - Create a branch with current changesserá la creación de una rama git borrar mis cambios locales

he hecho un montón de trabajo en mi proyecto que me doy cuenta de que debería haberse hecho en otro rama. Si creo una rama ahora, ¿se deben registrar mis cambios actuales, o se borrarán cuando se cree la nueva rama? Soy bastante nuevo en GIT y solo trato de evitar cometer un error de novato.

+2

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

+1

¿Ha confirmado sus cambios en la rama actual o simplemente están mintiendo en su copia de trabajo? –

+0

Los cambios solo están en mi copia de trabajo. – Nippysaurus

Respuesta

7

Si crea una nueva rama de la CABEZA actual usando:

$ git checkout -b newbranchname 

Entonces no se sobrescribirá los cambios.

+1

Bastante correcto, siempre y cuando el OP no haya cometido ningún cambio en la rama incorrecta todavía. Lo importante de entender es que una rama es simplemente un puntero a una confirmación, por lo que cuando haces esto, todo lo que estás haciendo es crear un nuevo puntero a la confirmación actual y verificarla, pero dado que es la misma confirmación, no necesita tocar su árbol de trabajo en absoluto. – Cascabel

1

Se moverán a la nueva sucursal. Pero si te sientes inseguro siempre puedes hacer una copia de seguridad de tu directorio de proyecto local primero.

+5

No, no se moverán a ningún lado. Tal vez parezca pedante, pero pensar en eso de esa manera va a estropear tus instintos sobre este y otros comandos. – Cascabel

+0

Digamos que los cambios serán visibles en la nueva sucursal. – jeremyjjbrown

2

En su caso, se aplica la respuesta de bdonlan, ya que la creación de una nueva rama no toca el directorio de trabajo.

En los casos más generales en los que lo haría, Git le advertirá y abortará si intenta cambiar las ramas con cambios en el directorio de trabajo aún presentes. De cualquier manera, es bueno no perder los cambios.

En esos casos, para mover los cambios de directorio de trabajo no comprometidos a una nueva rama, primer salvamento al escondite Git:

git stash save 

A continuación, crear y salida que se ramifican:

git checkout -b new-branch-name 

Luego pop su directorio de trabajo cambia del alijo de Git:

git stash pop 
+1

Esto no tiene sentido: si está creando la nueva rama desde su HEAD actual, nunca hay necesidad de esconder. – Cascabel

Cuestiones relacionadas