Git

Git Stash con nombre

Git Stash con nombre

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ínea
d79f7aa 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 $ git
En rama feature1
Cambios no preparados para confirmar:
(use "git add ... "para actualizar lo que se comprometerá)
(use "git checkout -- … "Para descartar cambios en el directorio de trabajo)
 
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 master
error: 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 alijo
WIP 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.TXT
PS

Si revisa el alijo, verá:

$ git lista de alijo
stash @ 0: WIP en feature1: 2cfe39b Agregado b.TXT

Si intenta verificar la rama maestra, debería poder hacerlo ahora:

$ git checkout master
Cambiado a la rama 'maestra'

Suponga que realiza los cambios necesarios en el maestro y luego vuelve a la rama feature1:

$ git checkout feature1

Tu b.txt todavía está vacío:

$ gato b.TXT
PS

Pero si obtiene los cambios del alijo usando el siguiente comando:

$ git stash aplicar
 
En rama feature1
Cambios no preparados para confirmar:
(use "git add ... "para actualizar lo que se comprometerá)
(use "git checkout -- … "Para descartar cambios en el directorio de trabajo)
 
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

Estoy a punto de cambiar esto a ..


A

Estoy a punto de cambiar esto a HECHO

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 alijo
Descartó 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 alijo
stash @ 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 @ 1

Y 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 @ 2

Y el alijo debería desaparecer:

$ git lista de alijo
stash @ 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

Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...
Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...