Introducción
DAYLIGHT CAFE está corrigiendo el precio de su flat white. La actualización del precio y la descarga correspondiente del menú para llevar ya están preparadas. Un anuncio de temporada sin terminar está mezclado en el mismo archivo del menú, y las notas privadas de degustación deben quedar fuera del commit público.
Elegirás exactamente qué incluir en un commit de Git, conservando el resto del trabajo. Necesitas saber desplazarte por la terminal y tener nociones básicas de archivos de texto. Aquí se explican el árbol de trabajo, el área de preparación y las instantáneas de los commits de Git; no necesitas programar sitios web ni tener una cuenta de GitHub.
Usa Workspace para los comandos, Working Copy para ver los archivos que se están editando y Committed Menu para ver los archivos exactos guardados en el commit actual. Las dos páginas leen contenido real y nunca completan archivos que falten. La cafetería, la ilustración y el menú son material de formación original. Las etiquetas de la interfaz y la salida de los programas permanecen en inglés.
Lee las dos versiones del menú
En este paso, compararás el menú público con los archivos de trabajo preparados y después configurarás una identidad de autor local para el repositorio.
Abre Committed Menu. El flat white cuesta EUR 3.80, y el panel de temporada indica que las bebidas se están planificando. Usa Download takeaway menu para abrir la descarga real de texto. También indica EUR 3.80.
Cambia a Working Copy. El flat white cuesta ahora EUR 4.20, pero el panel de temporada también contiene un anuncio de degustación privada. Solo está aprobada la corrección del precio. Los dos archivos públicos del menú deben coincidir en EUR 4.20; el borrador de temporada y tasting-notes.txt deben permanecer en tu máquina, fuera del commit.
Working Copy mantiene visible el anuncio de temporada sin terminar:

Cambia a Workspace. Se abre en /home/labex/project/daylight-menu, el repositorio de Git preparado. Usa pwd para mostrar tu directorio actual:
pwd
Si te has desplazado a otro lugar, vuelve con la ruta completa:
cd /home/labex/project/daylight-menu
Un repositorio guarda las instantáneas y el historial de un proyecto. El árbol de trabajo es el conjunto de archivos que puedes editar. git status --short resume cómo difieren esos archivos del último commit y del área de preparación. --short solicita una presentación compacta:
git status --short
Deberías ver menu.txt y menu-download.txt modificados, además de ?? tasting-notes.txt. ?? significa que las notas no están bajo seguimiento: Git no las ha añadido a ninguna instantánea. Un archivo modificado no se incluye automáticamente en un commit.
Git registra un nombre y un correo electrónico de autor en cada commit. git config --local guarda una configuración únicamente dentro de este repositorio. Las comillas mantienen juntas las dos palabras del nombre. Usa esta identidad ficticia de formación:
git config --local user.name "Alex Morgan"
git config --local user.email "alex@example.test"
Consulta los valores guardados:
git config --local user.name
git config --local user.email
Los valores esperados son Alex Morgan y alex@example.test. No se modifica ninguna identidad global de Git ni ninguna cuenta externa. Todos los comandos posteriores de este laboratorio deben ejecutarse en este mismo repositorio.
Prepara solo el bloque del precio aprobado
En este paso, colocarás la corrección de precio aprobada en el área de preparación sin incluir el borrador de temporada.
Permanece en Workspace. Un commit es una instantánea guardada. HEAD identifica el commit actual. El área de preparación, también llamada índice, contiene la instantánea exacta que registrará el siguiente commit. Preparar cambios copia el contenido seleccionado al índice; no elimina otros cambios de trabajo.
--no-pager es una opción de Git que imprime la salida directamente en lugar de abrir un visor interactivo. Úsala para las comparaciones siguientes. Si un comando anterior de Git ya ha abierto un visor que muestra (END), pulsa q para volver al intérprete de comandos; no escribas el siguiente comando en ese visor.
git --no-pager diff compara el árbol de trabajo con el índice. El separador -- indica que el argumento siguiente es un nombre de archivo en lugar de una opción de Git:
git --no-pager diff -- menu.txt
Busca dos grupos de cambios, llamados bloques de cambios o hunks. Una línea que empieza por - es el contenido anterior; una que empieza por + es el contenido propuesto. El primer bloque cambia el precio del flat white de 3.80 a 4.20. El segundo cambia el anuncio de temporada. La línea @@ identifica la ubicación de cada bloque; no es contenido del menú.
git add --patch pregunta qué bloques copiar al índice. Modifica la instantánea preparada y deja intacto el archivo de trabajo completo:
git add --patch menu.txt
En el bloque del precio del flat white, escribe y y pulsa Enter para prepararlo. En el bloque del panel de temporada, escribe n y pulsa Enter para dejarlo sin preparar. Lee el texto mostrado antes de cada respuesta; y significa sí y n significa no.
Ahora inspecciona la diferencia realmente preparada. --cached selecciona la comparación entre HEAD y el índice:
git --no-pager diff --cached -- menu.txt
Solo debería aparecer la corrección del precio. Compárala con lo que sigue sin preparar:
git --no-pager diff -- menu.txt
Aquí solo debería aparecer el anuncio de temporada. Todavía no se ha creado ningún commit.
Si seleccionaste el bloque equivocado, usa git restore --staged para restaurar desde HEAD la entrada de este archivo en el índice. --staged actúa únicamente sobre el índice, por lo que la corrección del precio y el borrador permanecen en el archivo de trabajo:
git restore --staged menu.txt
Después repite git add --patch menu.txt, elige el bloque del precio e inspecciona de nuevo ambas diferencias. Esta recuperación es segura antes del commit porque no descarta tus archivos de trabajo.
Incluye la descarga correspondiente del menú para llevar
En este paso, harás que el siguiente commit esté completo por sí mismo, añadiendo la descarga correspondiente y revisando cada archivo preparado.
Permanece en Workspace. La cafetería ofrece tanto una página como un menú para llevar. Publicar solo una corrección dejaría dos precios diferentes. cat muestra un archivo de texto pequeño:
cat menu-download.txt
Ya contiene Flat white: EUR 4.20. Este archivo solo contiene la corrección aprobada, así que prepara el archivo entero:
git add menu-download.txt
El comando simple git add prepara el archivo indicado. Evita preparar todo el directorio: también contiene notas privadas y el anuncio sin terminar.
--name-only enumera las rutas de una diferencia sin su contenido. Revisa las rutas preparadas:
git --no-pager diff --cached --name-only
La lista debe contener únicamente menu-download.txt y menu.txt. Después revisa su diferencia preparada completa:
git --no-pager diff --cached
Las dos versiones públicas deberían coincidir en 4.20. El anuncio de temporada y las notas de degustación no deben aparecer.
Para leer un archivo preparado completo en lugar de una diferencia, usa git --no-pager show con :menu.txt. Los dos puntos iniciales seleccionan la entrada del índice:
git --no-pager show :menu.txt
El menú preparado combina EUR 4.20 con el texto de temporada original, Seasonal drinks are being planned. Esta combinación demuestra que el índice puede diferir del árbol de trabajo.
Si preparaste accidentalmente las notas privadas, retíralas del área de preparación sin borrar el archivo:
git restore --staged tasting-notes.txt
Ejecuta esa recuperación solo si las notas se habían preparado; de lo contrario, Git puede indicar correctamente que desconoce la ruta sin seguimiento. Inspecciona de nuevo git --no-pager diff --cached antes de continuar. Un nombre de archivo mal escrito no cambia nada: usa git status --short para encontrar el nombre real y repite el comando previsto.
Crea el commit y lee el resultado público real
En este paso, registrarás un commit centrado en un único cambio y comprobarás que el trabajo sin terminar sigue disponible después.
Permanece en Workspace. git commit registra el índice completo como una nueva instantánea. -m proporciona su breve mensaje explicativo; las comillas mantienen unido ese mensaje:
git commit -m "Correct the flat white price"
Git informa de un nuevo commit y dos archivos modificados. Su hash varía. El mensaje describe el trabajo, pero lo que importa es el contenido real de la instantánea.
git --no-pager show puede leer un archivo directamente de un commit. HEAD:menu.txt significa el archivo llamado menu.txt guardado en el commit actual:
git --no-pager show HEAD:menu.txt
git --no-pager show HEAD:menu-download.txt
Ambos muestran el precio aprobado de 4.20. El anuncio de temporada guardado en el commit sigue indicando que las bebidas se están planificando.
Comprueba el trabajo restante:
git status --short
Los valores esperados son M menu.txt y ?? tasting-notes.txt. Las dos columnas de estado distinguen los cambios preparados a la izquierda de los cambios de trabajo sin preparar a la derecha. La M en la segunda columna significa que el borrador de temporada sigue sin preparar. Las notas siguen sin estar bajo seguimiento. Un estado vacío sería incorrecto para esta tarea: significaría que el trabajo sin terminar que debes conservar ha desaparecido o ha entrado en un commit.
Lee la diferencia restante y las notas:
git --no-pager diff -- menu.txt
cat tasting-notes.txt
Cambia a Committed Menu y actualiza la página. Confirma que el flat white cuesta EUR 4.20 y que el panel de temporada conserva su texto público original. Descarga otra vez el menú para llevar y confirma el mismo precio en el archivo real. Cambia a Working Copy: el borrador de degustación privada sigue visible allí.
El menú guardado en el commit muestra el precio aprobado y el anuncio público de temporada original:

Ahora tienes una corrección pública completa y el trabajo no relacionado permanece intacto. No hace falta hacer push; este proyecto enseña a delimitar commits locales. La colaboración remota corresponde a otro proyecto.
Resumen
Distinguiste los archivos de trabajo del índice y de un commit, seleccionaste un bloque de cambios, incluiste una descarga correspondiente y verificaste el menú realmente guardado en el commit. El borrador de temporada y las notas privadas quedaron fuera del commit. Un commit útil contiene el cambio previsto completo, no todos los archivos que casualmente estén modificados.



