Tema 7: Comparar contenido con diff
status responde qué archivos tienen cambios. diff ayuda a saber cuáles son esos cambios. Sin opciones, git diff compara el trabajo con el índice: muestra las ediciones de archivos seguidos que todavía no has preparado. Los archivos nuevos sin seguimiento no aparecen en esa comparación normal.
git diff --staged compara el índice con el commit actual. Muestra el contenido preparado que entraría en el próximo commit. En documentación verás --cached como equivalente de --staged en este uso.
git diff HEAD~1 HEAD compara dos commits ya guardados. La primera referencia es el punto de partida y la segunda el destino. Cambiar el orden invierte el sentido de la comparación. No modifica ninguna versión ni el índice.
Git real suele presentar un parche con líneas retiradas marcadas con - y añadidas con +, junto con contexto. El laboratorio simplifica la presentación mostrando el contenido anterior y posterior de cada archivo. El significado de las áreas comparadas se mantiene.
Prueba este caso: edita, prepara con add y vuelve a editar. Habrá una diferencia del trabajo frente al índice y otra del índice frente al commit. Es la comprobación concreta de la regla del tema 3: el commit guarda lo preparado. Después de revisar, decide entre preparar otra vez o restaurar únicamente el área correspondiente.
Comandos para probar #
1git status 2git diff 3git diff --staged 4git diff HEAD~1 HEAD
Error que conviene evitar #
Interpretar una salida vacía de diff como ausencia de todo cambio. Puede haber cambios preparados que solo verás con --staged.
Laboratorio local #
Prueba los comandos y observa qué cambia. Puedes reiniciar sin guardar una entrega. Los retos evaluables y el cuestionario están en las actividades de este tema.
Git / práctica local
Dos diferencias distintas
Aplicar edición cambia el archivo; git add lo prepara.
Historial de commits
Cada punto representa una versión guardada.
- 0000002: Añade saludo; HEAD → main
- 0000001: Commit inicial;
Comparar trabajo, índice y HEAD
Trabajo
Preparado Pendiente
Índice (staging)
Preparado
HEAD
Hola Git
TERMINAL
Sesión local preparada. Escribe help para consultar los comandos de este tema.
Comandos disponibles y límites
git --version · git config --global <clave> [valor] git init · git status git add <archivo | .> · git commit -m "mensaje" · git log git log --oneline · git switch <rama> (antes: checkout) git restore [--staged] <archivo> · git commit --amend [-m "mensaje" | --no-edit] git switch --detach <commit> · HEAD · HEAD~1 git diff [--staged | <commit> <commit>] help · clear
Sesión en memoria: recargar descarta la práctica. Doscientas acciones como máximo. Dos archivos editables de hasta 250 líneas. El modelo no ejecuta comandos reales ni realiza conexiones externas. diff muestra contenido anterior y posterior por archivo.
Resumen
- Muestra ediciones sin preparar de archivos seguidos.
- Permite revisar la selección antes de confirmar.
- Ambas consultan el cambio preparado.
- Interpretar una salida vacía de diff como ausencia de todo cambio. Puede haber cambios preparados que solo verás con --staged.