Cómo guardar sus cambios con el nombre asociado y encontrarlo después
Los desarrolladores a menudo tienen que realizar múltiples tareas. Es posible que esté trabajando en una nueva función y que haya una solicitud para corregir un error. O puede ser el desarrollador líder en varios proyectos.
Cuando cambia de tarea, a veces no desea comprometer trabajos sin terminar. En estos casos, el comando git stash puede ser de gran ayuda. Le permite apilar sus cambios y luego volver al trabajo inacabado sin agregar confirmaciones innecesarias a sus repositorios de git.
Un flujo de trabajo para Git Stash
Inicialicemos una rama maestra de git y enviemos un archivo ReadMe.TXT.
$ mkdir my_project$ cd mi_proyecto /
$ git init
$ touch Léame.TXT
$ git add -A
$ git commit -m "Inicializar"
Ahora agreguemos otro archivo llamado.txt a la rama maestra.
$ tocar un.TXT$ git add -A
$ git commit -m "Se agregó un.TXT"
Si revisa el historial, verá:
$ git log --en línead79f7aa Se agregó un.TXT
9434d7e Inicializar
Ahora creemos una rama feature1 y agreguemos una b.archivo txt:
$ git branch feature1$ git checkout feature1
$ toque b.TXT
$ git add -A
$ git commit -m "Se agregó b.TXT"
Abre tu b.txt en un editor y poner en la línea:
Estoy a punto de cambiar esto a ..Y guarda el archivo. Si verifica su estado de git, verá lo siguiente:
estado de $ gitEn rama feature1
Cambios no preparados para confirmar:
(use "git add
(use "git checkout --
modificado: b.TXT
no se agregaron cambios para confirmar (use "git add" y / o "git commit -a")
Suponga que, en esta etapa, recibe una solicitud para actualizar el.txt en la rama maestra. Pero no has terminado con la b.archivo txt. Si intenta verificar la rama maestra, obtendrá el siguiente error:
$ git checkout mastererror: sus cambios locales en los siguientes archivos se sobrescribirán al realizar la compra:
B.TXT
Por favor, confirme sus cambios o guárdelos antes de que pueda cambiar de sucursal.
Abortar
Pero no quieres cometer el trabajo inconcluso en b.TXT. Puedes usar el git alijo en esta situación:
$ git alijoWIP de estado de índice y directorio de trabajo guardado en feature1: 2cfe39b Agregado b.TXT
HEAD ahora está en 2cfe39b Agregado b.TXT
Si marca b.txt, debería estar vacío:
$ gato b.TXTPS
Si revisa el alijo, verá:
$ git lista de alijostash @ 0: WIP en feature1: 2cfe39b Agregado b.TXT
Si intenta verificar la rama maestra, debería poder hacerlo ahora:
$ git checkout masterCambiado a la rama 'maestra'
Suponga que realiza los cambios necesarios en el maestro y luego vuelve a la rama feature1:
$ git checkout feature1Tu b.txt todavía está vacío:
$ gato b.TXTPS
Pero si obtiene los cambios del alijo usando el siguiente comando:
$ git stash aplicarEn rama feature1
Cambios no preparados para confirmar:
(use "git add
(use "git checkout --
modificado: b.TXT
no se agregaron cambios para confirmar (use "git add" y / o "git commit -a")
El comando stash apply tomó los cambios escondidos y los aplicó a b.archivo txt
Puede completar su trabajo en b.txt mi modificando la línea
A
Ahora continúe y confirme sus cambios:
$ git add -A$ git commit -m "Modificado b.TXT"
Aplicar un alijo no lo limpia automáticamente del alijo. Tienes que limpiarlo manualmente:
$ git alijoDescartó refs / stash @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)
Por qué Git Stash con nombre?
El alijo de git es una pila. Para que puedas seguir acumulando cambios.
Suponga que agrega "X" ab.txt, guárdelo, agregue una "Y" ab.txt, guárdelo y agregue una "Z" ab.txt y guárdalo. Si revisa el historial de alijo, verá algo como esto:
$ git lista de alijo[protegido por correo electrónico] 0: WIP en feature1: 2d6f515 modificado b.TXT
[protegido por correo electrónico] 1: WIP en feature1: 2d6f515 Modificado b.TXT
[protegido por correo electrónico] 2: WIP en feature1: 2d6f515 Modificado b.TXT
No tienes forma de saber qué alijo tiene qué cambio. Cuando esté escondiendo, puede usar la opción de guardar para poner comentarios. Puede usar los comentarios para adjuntar un nombre a su alijo y hacerlos reconocibles:
$ git alijo guardar "X"Directorio de trabajo e índice guardados en función 1: X
HEAD ahora está en 2d6f515 Modificado b.TXT
Para agregar la modificación "X", "Y" y "Z", puede obtener lo siguiente en su alijo usando la opción de guardar para cada alijo:
$ git lista de alijostash @ 0: en feature1: Z
stash @ 1: en feature1: Y
stash @ 2: en feature1: X
Ahora tienes un nombre para cada cambio que guardaste. Desafortunadamente, no puedes usar el nombre para recuperar el alijo. Tendrás que usar el número de alijo. Suponga que desea obtener su cambio "Y". Ves que [correo electrónico protegido] 1 es Y. Para que pueda aplicar ese cambio a su rama actual:
$ git alijo aplicar alijo @ 1Y tu b.txt debe tener los cambios de [correo electrónico protegido] 1.
Puedes usar el mismo método para dejar un alijo. Supongamos que te das cuenta de que ya no necesitas el alijo X. Puede usar el siguiente comando para eliminar ese alijo:
$ git Stash Drop Stash @ 2Y el alijo debería desaparecer:
$ git lista de alijostash @ 0: en feature1: Z
stash @ 1: en feature1: Y
Recuerde que si usa las opciones de aplicar y soltar sin ningún parámetro, usará la parte superior de la pila ([correo electrónico protegido] 0).
Conclusión
El comando git stash es una forma poderosa de administrar su espacio de trabajo. Dominar este comando lo ayudará a trabajar de manera más eficiente.
Estudio adicional:
- https: // git-scm.com / book / es / v1 / Git-Tools-Stashing
Referencias:
Stack Overflow: cómo nombrar y recuperar un alijo por nombre en git