Git Stash con nombre

Git Stash con nombre

Cómo GIT esconder 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 puede haber una solicitud para solucionar un error. O podría ser el desarrollador principal en múltiples proyectos.

Cuando cambia entre tareas, a veces no desea cometer un trabajo 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 compromisos innecesarios a sus repositorios GIT.

Un flujo de trabajo para Git Stash

Inicializamos una rama maestra Git y cometamos un archivo ReadMe.TXT.

$ mkdir my_project
$ cd my_project/
$ git init
$ Touch ReadMe.TXT
$ git add -a
$ git commit -m "inicializar"

Ahora agregemos otro archivo llamado un.txt a la rama maestra.

$ touch a.TXT
$ git add -a
$ git commit -m "agregó un.TXT"

Si verifica el historial, verá:

$ git log -enneline
D79F7AA agregó un.TXT
9434D7E Inicializar

Ahora creemos una rama Feature1 y agregemos una B.archivo txt:

$ git rama característica1
$ git de pago característica1
$ touch b.TXT
$ git add -a
$ git commit -m "agregó b.TXT"

Abre tu B.archivo txt en un editor y poner en la línea:

Estoy a punto de cambiar esto a ..

Y guarda el archivo. Si revisa el estado de su git, ve lo siguiente:

Estado de $ git
En la rama característica1
Cambios no organizados para Commit:
(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")

Supongamos que, en esta etapa, obtienes una solicitud para actualizar el A.archivo txt en la rama maestra. Pero no has terminado con la B.archivo txt. Si intenta consultar la rama maestra, recibe el siguiente error:

$ git checkout maestro
Error: sus cambios locales en los siguientes archivos se sobrescribirían mediante el pago:
b.TXT
Por favor, comete sus cambios o guárdelos antes de que pueda cambiar de ramas.
Aborto

Pero no quieres cometer el trabajo inacabado en B.TXT. Puedes usar el alijo de git en esta situación:

$ git stash
Directorio de trabajo guardado y WIP de estado de índice en Feature1: 2CFE39B agregado B.TXT
La cabeza ahora está en 2CFE39B agregado B.TXT

Si comprobas B.txt, debería estar vacío:

$ Cat B.TXT
ps

Si revisa el alijo, verá:

Lista de stash de $ git
stash@0: wip on stong1: 2cfe39b agregado b.TXT

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

$ git checkout maestro
Cambio a la rama 'maestro'

Supongamos que realiza los cambios necesarios en el maestro y luego vuelve a la rama Funcion1:

$ git de pago característica1

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

$ Cat B.TXT
ps

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

$ git stash aplicar
En la rama característica1
Cambios no organizados para Commit:
(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 de aplicar altas tomó los cambios escondidos y lo aplicó a B.archivo txt
Puedes completar tu trabajo en B.txt mi modificación de la línea

Estoy a punto de cambiar esto a ..


A

Estoy a punto de cambiar esto a hecho

Ahora adelante y comete sus cambios:

$ git add -a
$ git commit -m "modificado b.TXT"

Aplicar un alijo no lo limpia automáticamente desde el alijo. Tienes que limpiarlo manualmente:

$ git stash drop
Refs/stash@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

¿Por qué Git Stash con nombre??

El alijo de git es una pila. Para que puedas seguir apilando tus cambios.

Supongamos que agrega "x" a B.txt, guarda, agregue una "y" a B.txt, guárdelo y agregue una "Z" a B.txt y esconderlo. Si revisa el historial de alijo, verá algo como esto:

Lista de stash de $ git
stash@0: wip on stong1: 2d6f515 modificado b.TXT
stash@1: wip on stong1: 2d6f515 modificado b.TXT
stash@2: wip on stong1: 2d6f515 modificado b.TXT

No tienes forma de saber qué alijo tiene qué cambio. Cuando está escondiendo, puede usar la opción Guardar para poner en los comentarios. Puede usar los comentarios para adjuntar un nombre a su alijo y hacerlos reconocibles:

$ git stash save "x"
Directorio de trabajo guardado y estado de índice en la función1: x
La cabeza ahora está en 2D6F515 modificado B.TXT

Para agregar modificación "X", "Y" y "Z", puede obtener lo siguiente en su alijo usando la opción Guardar para cada alijo:

Lista de stash de $ git
stash@0: en característica1: z
stash@1: en característica1: y
stash@2: en característica1: x

Ahora tienes un nombre para cada cambio que te esconde. Desafortunadamente, no puedes usar el nombre para recuperar el alijo. Tendrás que usar el número de alijo. Supongamos que quieres obtener tu cambio "Y". Ves que stash@1 es Y. Entonces puede aplicar ese cambio a su rama actual:

$ git stash aplica stash@1

Y tu B.TXT debe tener los cambios de stash@1.

Puede usar el mismo método para soltar un alijo. Supongamos que te das cuenta de que ya no necesitas el sector X. Puede usar el siguiente comando para eliminar ese alijo:

$ git stash drop stash@2

Y el alijo debería haberse ido:

Lista de stash de $ git
stash@0: en característica1: z
stash@1: en característica1: y

Recuerde que si usa las opciones Aplicar y soltar sin parámetros, usará la parte superior de la pila (stash@0).

Conclusión

El comando git stash es una forma poderosa de administrar su espacio de trabajo. Dominar este comando te ayudará a trabajar de manera más eficiente.

Estudio adicional:
  • https: // git-scm.com/book/en/v1/git-tools-stashing
Referencias:

STACK OVERFLOW: How-to-to-to-name-y-retrieve-a-stash-byame-in-git