Introducción
Fieldnotes organiza pequeños talleres y paseos por jardines. Una actualización publicada pausó accidentalmente las inscripciones de Clay & Coffee. Otra actualización posterior y válida añadió Sunset Walk. El equipo quiere restablecer las inscripciones conservando ese evento más reciente y todas las reservas existentes.
Primero usarás un taller que funciona correctamente para conocer el proceso normal de reserva y entrega de entradas. Después inspeccionarás el historial real de Git, desharás el cambio defectuoso anterior mediante un nuevo commit correctivo, lo publicarás y probarás una reserva real. Retroceder todo el sitio haría perder trabajo útil.
Debes comprender la navegación básica por la terminal, los commits, las ramas y un log/diff sencillo; se recomienda el curso anterior sobre fusión del trabajo de un equipo. Las pestañas preparadas Workspace y Event Desk son los únicos accesos necesarios. Se trata de repositorios Git reales y una aplicación HTTP en una única máquina de formación. En este escenario, el sitio lee directamente la rama main compartida; no se enseña una cadena de despliegue de un servicio alojado. Todas las identidades y los eventos son sintéticos. La duración de 45 minutos es una estimación del autor.
Prueba el sitio y localiza la actualización defectuosa
En este paso, experimentarás una reserva normal, observarás el taller afectado e identificarás qué entradas del historial representan el fallo y el trabajo posterior que merece conservarse.
Abre la pestaña Event Desk. En la lista de talleres, busca Postcard Studio y haz clic en su enlace View workshop. Este taller que funciona correctamente muestra Save your seat, el campo Full name y Reserve a place. Introduce Alex Morgan, u otro nombre de ejemplo, y haz clic una vez en Reserve a place.
La confirmación debería decir You're on the list. y mostrar Postcard Studio, Studio Two y EUR 10.00. Haz clic en Download ticket. Usa la lista de descargas de tu navegador para abrir el archivo .txt. Debe contener el mismo taller, nombre, punto de encuentro y total. La referencia de reserva se genera para tu reserva real y variará. Este es el resultado normal y útil que también debería ofrecer el taller afectado.
Haz clic en All workshops en la cabecera de la página. Abre Clay & Coffee con su enlace View workshop. El problema inicial esperado es Registration is paused, sin formulario de reserva. Las reservas existentes siguen siendo válidas; no las elimines para reparar una configuración de inscripciones.
Usa otra vez All workshops en la cabecera y abre Sunset Walk. Debe seguir disponible con 15 Nov 2026, 16:00, East Gate y EUR 6.00. La página posterior es trabajo válido que debes conservar, no parte del fallo.
Cambia a la pestaña Workspace. Empieza en el repositorio de edición:
cd /home/labex/project/event-desk/editor
cd cambia el directorio de esta terminal. Si escribes mal una ruta, usa pwd para mostrar el directorio actual y ls para listar su contenido; después repite el comando cd completo de arriba. Los errores habituales de navegación no requieren reiniciar la VM.
Configura una identidad de autor solo en este repositorio. --local mantiene la configuración local; las comillas mantienen unido un nombre que contiene espacios. Estos son valores de ejemplo sintéticos y puedes elegir los tuyos:
git config --local user.name "Event Editor"
git config --local user.email "events@example.com"
La aplicación guarda las reservas fuera del repositorio de edición. Su archivo JSON usa nombres de campo entre comillas seguidos de dos puntos y valores; los nombres y los identificadores de taller son texto, mientras que los precios se almacenan como céntimos enteros. .. significa el directorio padre, así que el siguiente comando de solo lectura muestra el archivo de reservas situado junto al repositorio sin salir de tu directorio de edición:
cat ../bookings.json
Localiza los registros originales de Casey Lane y Sam Rivera, además de tu nueva reserva de Postcard Studio. Conserva estos registros sin cambios. Git corregirá una configuración de evento bajo control de versiones; no hará retroceder la colección de reservas.
Lee el historial de commits. --no-pager muestra la salida directamente en lugar de abrir un visor desplazable; --oneline proporciona una línea breve por commit; --decorate etiqueta los punteros de rama y las etiquetas:
git --no-pager log --oneline --decorate
La entrada más reciente es Add the Sunset Walk event, seguida de Pause Clay and Coffee registrations y Open the Fieldnotes event desk. Los identificadores exactos de los commits varían. La etiqueta preparada incident-start es un marcador fijo de la versión que recibiste. A diferencia de main, no se moverá cuando crees un nuevo commit. Conserva ese marcador sin cambios.
Lee qué cambió el commit más reciente señalado por el marcador. show muestra el mensaje y el parche de un commit seleccionado:
git --no-pager show incident-start
Añade events/sunset-walk.json. Ese es el nuevo evento que debes conservar. La pausa anterior, no esta incorporación, es el cambio que debes deshacer. El punto de comprobación confirma tu nueva reserva real de referencia y su entrada, en lugar de considerar una reserva de ejemplo existente como tu nuevo resultado.
Añade una corrección sin perder el trabajo posterior
En este paso, identificarás la modificación defectuosa y revertirás únicamente esa modificación en un nuevo commit después de la punta recibida.
Permanece en Workspace, en /home/labex/project/event-desk/editor. Una expresión de revisión puede identificar un antecesor sin extraerlo ni mover una rama. incident-start~1 significa un padre antes del marcador fijo; incident-start~2 significa dos padres antes. Lee el commit intermedio:
git --no-pager show incident-start~1
Su parche cambia registration_open de true a false en events/clay-and-coffee.json. Esa configuración booleana permite o pausa nuevas inscripciones. capacity es el límite positivo de plazas del taller; también debe seguir siendo utilizable. El valor sin cambios de price_cents, 1800, significa EUR 18.00.
Lee la instantánea original del evento. Los dos puntos unen una revisión y una ruta de archivo, por lo que la siguiente expresión selecciona el archivo de dos padres antes del marcador:
git --no-pager show incident-start~2:events/clay-and-coffee.json
El original tiene las inscripciones abiertas con capacidad 12. Restablecer todo el sitio a esa versión anterior también eliminaría Sunset Walk. Una reversión, o revert, en cambio, calcula la inversa del cambio de un commit elegido y registra una nueva corrección en la rama actual. El commit defectuoso original permanece en el historial, al igual que los commits útiles posteriores.
Comprueba el estado de trabajo antes de la corrección. --short muestra una lista compacta de archivos modificados; el repositorio preparado no debería producir salida:
git status --short
Ahora revierte el commit defectuoso identificado. --no-edit acepta el mensaje correctivo generado por Git y evita abrir un editor. El marcador fijo mantiene estable este objetivo incluso después de que avance tu rama:
git revert --no-edit incident-start~1
Se espera un nuevo commit que comience por Revert "Pause Clay and Coffee registrations" y un cambio en un archivo. Tu identidad de autor y el identificador del commit pueden ser diferentes.
Practica cómo reconocer una operación ya completada ejecutando una vez más el mismo comando basado en el marcador fijo. Se espera que esta repetición devuelva un estado distinto de cero con nothing to commit, working tree clean. Ejecútala por separado y después continúa:
git revert --no-edit incident-start~1
En este caso preparado, en el que la corrección ya está aplicada, no hay ninguna reversión sin terminar que resolver. Inspecciona el historial y el estado en lugar de inventar un commit correctivo vacío:
git --no-pager log --oneline --decorate
git status --short
Debería haber exactamente una nueva corrección por encima de los commits originales de Sunset Walk, la pausa y la apertura, y ningún cambio de trabajo. El marcador incident-start sigue identificando la versión recibida. Esto también evita confundir un HEAD que se mueve con una referencia fija del incidente.
Revisa la corrección exacta. diff compara las dos instantáneas indicadas. HEAD es el commit actualmente extraído; -- separa las revisiones de la ruta de archivo que sigue:
git --no-pager diff incident-start HEAD -- events/clay-and-coffee.json
Se espera únicamente el cambio inverso, de false a true. Comprueba que el evento más reciente no tenga diferencias respecto a la versión recibida:
git --no-pager diff incident-start HEAD -- events/sunset-walk.json
No se espera ninguna salida para Sunset Walk. Tienes una corrección local centrada en el fallo y conservas el trabajo posterior.
Cambia a Event Desk, haz clic en All workshops en su cabecera y abre Clay & Coffee otra vez. Todavía dice Registration is paused. Esto es lo esperado: tu commit del repositorio de edición es local, mientras que este sitio lee el repositorio compartido. El siguiente paso lo publica. Este punto de comprobación evalúa el commit correctivo local y los archivos conservados.
Publica y prueba las inscripciones reparadas
En este paso, entregarás la corrección a la rama main compartida, crearás una reserva real en el taller restablecido y comprobarás que el evento más reciente y las reservas existentes permanecen intactos.
Cambia a Workspace, todavía en /home/labex/project/event-desk/editor. origin es el nombre de remoto preparado para /home/labex/project/event-desk/shared.git, un repositorio bare local que guarda el historial compartido sin una copia de trabajo editable. push origin main envía tu rama main local a ese destino:
git push origin main
Se espera main -> main sin rechazo. Tu nuevo commit sigue a la punta recibida, por lo que este envío normal conserva todos los commits publicados. El escenario no tiene ningún colaborador actuando en segundo plano. Si al experimentar se produce un rechazo, inspecciona los historiales reales; un reemplazo forzado que pierda trabajo original no cumple la tarea.
Revisa los punteros entregados:
git --no-pager log --oneline --decorate
La rama main local y origin/main identifican ahora el nuevo commit correctivo. El marcador original del incidente y todos los mensajes anteriores permanecen debajo.
Cambia a Event Desk. Haz clic en All workshops en la cabecera de la página y después abre Clay & Coffee. Ahora muestra Save your seat, Full name y Reserve a place. Comprueba la fecha, el punto de encuentro y el precio sin cambios de EUR 18.00 antes de introducir un nombre.

Busca el título del taller y el formulario de la derecha; en una pantalla estrecha, el formulario está debajo de los detalles del evento. Las plazas restantes reflejan reservas reales, por lo que la cifra puede diferir del ejemplo.
Introduce Jamie Chen, u otro nombre completo de ejemplo, y haz clic una vez en Reserve a place. La confirmación debería decir You're on the list. con Clay & Coffee, 14 Nov 2026, 14:00, The Pottery Room, una plaza y EUR 18.00.

Haz clic en Download ticket, abre el archivo .txt resultante desde la lista de descargas de tu navegador y compara su referencia de reserva, taller, fecha, hora, punto de encuentro, nombre, plazas y total con la confirmación. La referencia se genera para tu reserva; no es un valor que debas copiar de una captura de pantalla.
Usa All workshops en la cabecera para volver a abrir Sunset Walk. Su página completa debe seguir mostrando 15 Nov 2026, 16:00, East Gate y EUR 6.00. Postcard Studio también debe seguir siendo utilizable, sujeto a su capacidad restante real.
Cambia a Workspace y lee otra vez la colección de reservas:
cat ../bookings.json
Ambos registros originales y tu reserva anterior de Postcard Studio permanecen; se ha añadido la nueva reserva de Clay & Coffee. Corregiste el evento bajo control de versiones sin hacer retroceder los datos de reservas.
Termina con la comprobación del estado de trabajo:
git status --short
No debería quedar ningún cambio bajo seguimiento. Se permiten notas personales sin seguimiento si creaste alguna; no incluyas archivos adicionales bajo seguimiento en el sitio. El punto de comprobación verifica el historial real, la publicación compartida, las páginas completas en funcionamiento, los registros conservados y el contenido real de la entrada.
Resumen
Usaste una reserva normal para establecer el resultado esperado de la actividad, rastreaste un fallo de inscripciones hasta un commit anterior y añadiste una corrección centrada en el fallo con git revert. El evento más reciente, el historial original y las reservas existentes permanecieron intactos.
Después de un push normal, el sitio compartido aceptó una nueva reserva y entregó una entrada real con el evento y el precio correctos. El desafío independiente cambia la configuración defectuosa e incluye dos commits posteriores válidos, así que inspecciona el historial recibido antes de elegir el objetivo de la corrección.



