← Todos los recursos

Git · RECURSO GRATUITO

Tu primer proyecto con Git: cinco retos para dejar de guardar final_v3

Construye la guía de tu próximo proyecto y guarda su historia. Cinco retos con pistas, soluciones y un resultado que puedes explicar. Sin cuenta ni tarjeta.

45–75 minutos orientativos. Puedes parar y repetir a tu ritmo.

Descargar guía sin conexión

HTML independiente, imprimible como PDF. Sin registro.

Qué necesitas: Git 2.28 o posterior y Bash (Git Bash en Windows; en macOS/Linux abre Bash). Comprueba git --version; si no está instalado, descárgalo desde https://git-scm.com/install/ y vuelve a abrir la terminal. No uses PowerShell para estos bloques. No necesitas programar, GitHub ni publicar nada. El tiempo es orientativo.

Tu resultado: Un repositorio local con main y mejora-guia, seis commits y una guía que conserva una mejora y revierte un experimento. Resuelve los retos en orden, en la misma terminal. Tu puntuación personal: un punto por cada comprobación que puedas explicar, hasta cinco; no se guarda automáticamente ni suma XP al curso.

Reto 1. Guarda una primera versión

Abre Bash en una carpeta de prácticas fuera de OneDrive/Dropbox y de cualquier repositorio. pwd muestra tu ubicación; git rev-parse --show-toplevel debe responder que no es un repositorio. Si muestra una ruta, sal de ese proyecto antes de continuar. Crea la carpeta siguiente; si ya existe o mkdir falla, detente y escoge otro nombre. Ejecuta las líneas una a una y para si aparece un error. La identidad ficticia solo se configura aquí. Tu encargo: crea README.md con el título «Mi proyecto» y la línea «Objetivo: practicar Git», prepara únicamente ese archivo y crea el commit «Crea la guía del proyecto». Un commit guarda una versión en este equipo; no es una copia en la nube.

pwd
git rev-parse --show-toplevel
mkdir labs-git-cinco-retos
cd labs-git-cinco-retos
git init -b main
git config --local user.name 'Alumno Labs'
git config --local user.email 'alumno@example.invalid'
git config --local commit.gpgsign false
Necesito una pista

printf escribe texto; > crea o reemplaza un archivo. git add README.md lo prepara; git commit -m guarda lo preparado. Usa las redirecciones solo en los archivos del laboratorio.

Ver solución de este reto
printf '# Mi proyecto\nObjetivo: practicar Git\n' > README.md
git add README.md
git commit -m 'Crea la guía del proyecto'
git status --short
git log --oneline

add prepara una instantánea; commit la incorpora al historial. Crear el archivo por sí solo no hace ninguna de las dos cosas. Los identificadores y algunos mensajes pueden variar entre equipos.

Comprueba: README.md tiene dos líneas y log muestra un commit. status --short no imprime líneas: no quedan cambios pendientes. Un punto si puedes explicar qué guardó commit.

Reto 2. Mira el cambio antes de guardarlo

Añade «Primer paso: crear una carpeta de trabajo» al final de README.md. Antes de confirmar, mira la diferencia, prepara el archivo y revisa la diferencia preparada. Finalmente crea el commit «Añade el primer paso». Predice qué muestra cada diff antes de ejecutarlo.

git status --short
Necesito una pista

>> añade al final; > reemplazaría todo el contenido. git diff compara la edición con lo preparado; git diff --cached compara lo preparado con el último commit.

Ver solución de este reto
printf 'Primer paso: crear una carpeta de trabajo\n' >> README.md
git diff -- README.md
git add README.md
git diff --cached -- README.md
git commit -m 'Añade el primer paso'
git status --short

Antes de add, la línea aparece en diff; después, en diff --cached. Se confirma la versión preparada, que puede diferir de una edición posterior del archivo.

Comprueba: La guía conserva sus dos líneas y añade una tercera; hay dos commits y el estado queda limpio. Un punto si distingues la edición, la preparación y el historial.

Reto 3. Corrige un add demasiado amplio

Has preparado dos archivos, pero solo debe entrar plan.txt en el próximo commit. Ejecuta la preparación de abajo. Después retira borrador.txt de la preparación sin borrar su contenido. Confirma solo plan.txt con el mensaje «Guarda el plan». Deja borrador.txt sin seguimiento: comprobaremos que una rama no es una caja donde se guarda cualquier archivo.

printf 'Plan: practicar cada paso\n' > plan.txt
printf 'Esta idea sigue en borrador\n' > borrador.txt
git add plan.txt borrador.txt
git status --short
Necesito una pista

git restore --staged actúa sobre la preparación. No añadas --worktree: quieres conservar el archivo. En status --short, A en la primera columna indica una incorporación preparada y ?? significa sin seguimiento.

Ver solución de este reto
git restore --staged borrador.txt
cat borrador.txt
git diff --cached --name-only
git commit -m 'Guarda el plan'
git status --short

La preparación contiene solo plan.txt. El borrador permanece en disco y aparece como ?? borrador.txt. No está en ningún commit ni queda protegido por cambiar de rama.

Comprueba: Tres commits, plan.txt guardado y ?? borrador.txt como único pendiente. Un punto si conservaste el borrador sin incluirlo en el commit.

Reto 4. Prueba una mejora en otra rama

Crea y cambia a mejora-guia. Añade «Segundo paso: revisar los cambios» a README.md y confírmalo como «Añade la revisión». Vuelve a main: la guía aún no debe tener esa línea. Integra mejora-guia mediante merge --ff-only y vuelve a leerla. El borrador sin seguimiento sigue en el directorio mientras cambias de rama; no lo añadas.

git branch --show-current
Necesito una pista

git switch -c crea una rama y cambia a ella; git switch main regresa. merge --ff-only puede avanzar main porque aquí no tiene commits propios nuevos. Si falla, detente y revisa el historial; no lo fuerces.

Ver solución de este reto
git switch -c mejora-guia
printf 'Segundo paso: revisar los cambios\n' >> README.md
git add README.md
git commit -m 'Añade la revisión'
git switch main
cat README.md
git merge --ff-only mejora-guia
cat README.md
git log --oneline --all --decorate

La rama es una referencia a un commit. Al avanzar main hasta el commit de mejora-guia incorporas esa mejora sin crear otro commit de integración. No hay conflicto en este recorrido.

Comprueba: En main, README.md termina con «Segundo paso: revisar los cambios». Ambas ramas apuntan al mismo cuarto commit. Un punto si explicas por qué merge no ha creado un quinto commit.

Reto 5. Deshaz un experimento conservando su historia

Añade y confirma el experimento de abajo. Después revierte ese último commit con git revert --no-edit HEAD. Antes de hacerlo, escribe qué línea debería desaparecer y cuáles deberían quedarse. Este laboratorio no genera conflictos; si encuentras uno, no continúes copiando comandos sin revisarlo.

printf 'Experimento: saltarse la revisión\n' >> README.md
git add README.md
git commit -m 'Prueba un atajo'
Necesito una pista

revert crea un commit nuevo que invierte el anterior. No borra aquel commit. No uses reset --hard ni restore sobre la guía para resolver este encargo.

Ver solución de este reto
git revert --no-edit HEAD
git log --oneline -3
cat README.md
git status --short

Ahora hay seis commits en main: los cuatro anteriores, el experimento y su reversión. La mejora de revisión permanece y borrador.txt sigue sin seguimiento.

Comprueba: La línea del experimento desaparece; la de revisar cambios permanece. log muestra la reversión y el experimento. Un punto si explicas por qué el experimento continúa en el historial.

Tu turno

Misión de transferencia: sin copiar la solución, crea checklist.txt con dos líneas: «Mirar status» y «Revisar diff». Confirma solo ese archivo en main con el mensaje «Añade la checklist». No incluyas borrador.txt. Comprueba el contenido del último commit y explica por qué una cuenta de GitHub no ha sido necesaria. Si te atascas, revisa los retos 2 y 3.

Ver solución y explicación
printf 'Mirar status\nRevisar diff\n' > checklist.txt
git add checklist.txt
git diff --cached --name-only
git commit -m 'Añade la checklist'
git show --stat --oneline HEAD
git status --short
git log --oneline --all --decorate

Solo checklist.txt entra en el último commit. Hay siete commits en main, mejora-guia sigue apuntando al cuarto y borrador.txt continúa sin seguimiento. Git trabaja localmente; compartir por GitHub será un paso posterior. Si log abre un paginador, pulsa q para volver a la terminal. Para repetir, crea otra carpeta nueva; no necesitas borrar ni reiniciar este laboratorio.

Explícalo con tus palabras

  • ¿Qué diferencia hay entre guardar README.md en el editor, ejecutar add y crear un commit? Respuesta: disco, preparación e historial son pasos distintos.
  • ¿Por qué borrador.txt sobrevive al cambio de rama, pero no está guardado en el historial? Respuesta: es un archivo sin seguimiento; Git todavía no lo ha incorporado.
  • ¿Qué evidencia demuestra que revert conservó el experimento? Respuesta: log contiene el commit original y otro que invierte sus cambios.

Repite con datos distintos antes de marcarlo como practicado. Esta es una autoevaluación, no una certificación.

Guarda tu siguiente paso

Todo el recurso es gratuito y puedes descargarlo sin cuenta. Si te registras, podrás guardar esta práctica y retomarla desde Mi cuenta.

Entrar y guardar Crear cuenta gratis

Crear una cuenta no te suscribe a correos promocionales.