Reescribiendo la Historia

GitBeginner
Practicar Ahora

Introducción

¡Bienvenido, explorador temporal de Git! Se te ha encomendado una misión crucial: poner orden en el caótico historial de commits de un proyecto de alto secreto. Tu objetivo es utilizar tus nuevos poderes de Git, específicamente el arte del rebase interactivo, para transformar una línea de tiempo confusa en un historial claro y conciso.

Imagina que eres un historiador con la capacidad de reescribir el pasado. Tu trabajo consiste en tomar una serie de eventos dispersos y reorganizarlos en una narrativa coherente. Eso es exactamente lo que harás con la función de rebase interactivo de Git. Combinarás commits relacionados, eliminarás los innecesarios y reescribirás los mensajes para contar la historia del desarrollo de tu proyecto de una forma mucho más profesional.

¿Estás listo para sumergirte en el flujo temporal y emerger con un historial de Git impecable? ¡Que comience tu aventura cronológica!

Limpiando la Línea de Tiempo

Tareas

El repositorio del desafío se ha configurado en ~/project/time-travel-git. Ejecuta el siguiente comando para visualizar el historial de commits inicial:

cd ~/project/time-travel-git
git log --oneline

Deberías ver los siguientes 4 commits (los hashes de tus commits serán diferentes):

886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project

Tu misión consiste en realizar las siguientes tareas:

  1. Combinar los dos commits más antiguos ("Start secret project" y "Fix typo in project name") en un único commit con el mensaje "Initialize secret project".
  2. Cambiar el mensaje del commit "Add project codename" por "Add project codename: Chronos".
  3. Mantener el commit más reciente ("Add project description") tal como está.

Requisitos

Para completar con éxito esta misión, cumple con los siguientes requisitos:

  • Todas las operaciones deben realizarse dentro del directorio ~/project/time-travel-git.
  • Debes utilizar el comando git rebase -i (rebase interactivo) para limpiar el historial.
  • Tu historial final debe tener exactamente 3 commits (en lugar de los 4 originales).
  • El contenido de los archivos no debe cambiar; solo estás modificando el historial de commits.
  • Al finalizar el desafío, al ejecutar git log --oneline se deben mostrar 3 commits con los mensajes correctos.

Consejos

Aquí tienes algunas pistas útiles para guiarte en el desafío:

  1. El rebase interactivo te permite manipular los commits de tu historial. El formato básico del comando es:

    git rebase -i <commit>

    donde <commit> es el commit anterior al primero que deseas modificar. Para modificar desde el mismísimo primer commit, puedes usar:

    git rebase -i --root
  2. En la pantalla del rebase interactivo, verás una lista de commits con acciones. Las acciones comunes son:

    • pick: usar el commit tal cual.
    • reword o r: usar el commit pero cambiar su mensaje.
    • squash o s: combinar este commit con el anterior.
    • fixup o f: como squash, pero descarta el mensaje de este commit.
  3. Para combinar commits, es recomendable usar squash o fixup en el segundo commit de la lista.

  4. Para cambiar el mensaje de un commit, utiliza la acción reword.

  5. Después de configurar tu plan de rebase, guarda y cierra el editor. Git te guiará por el resto del proceso, abriendo nuevas ventanas del editor según sea necesario para editar los mensajes de los commits.

  6. Si cometes un error durante el rebase, siempre puedes abortarlo con:

    git rebase --abort

    y empezar de nuevo.

Ejemplo

Tras completar el desafío, tu git log --oneline debería verse similar a esto (con diferentes hashes):

abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project
✨ Revisar Solución y Practicar

Resumen

En este desafío, te has embarcado en un viaje a través del tiempo en el historial de Git. Has dominado el arte del rebase interactivo, una herramienta poderosa que te permite moldear el pasado y crear un historial de commits más limpio y lógico.

Al combinar commits, reescribir mensajes y reorganizar cambios, has transformado una secuencia desordenada de eventos en una narrativa coherente. Esta habilidad es invaluable en proyectos del mundo real, donde mantener un historial limpio y comprensible facilita enormemente la colaboración y la gestión del proyecto.

Recuerda: un gran poder conlleva una gran responsabilidad. Aunque reescribir la historia es muy útil para ramas locales o proyectos personales, debe usarse con precaución en ramas compartidas. Comunícate siempre con tu equipo antes de modificar el historial compartido.

A medida que continúes tus aventuras con Git, sigue perfeccionando estas habilidades. La capacidad de manipular el historial no se trata solo de "limpiar", sino de construir un relato claro de la evolución de tu trabajo. ¡Que tus futuros historiales de Git sean impecables, tus fusiones libres de conflictos y tus commits siempre significativos!