git diff

Instantáneas básicas

Muestra los cambios entre tus archivos, el área de preparación y los commits


El comando 'git diff' muestra exactamente las líneas que cambiaron. Sin argumentos compara tus archivos de trabajo con el área de preparación — los cambios que aún no preparaste. Con --staged compara el área de preparación con el último commit — lo que contendrá tu próximo commit. Pásale commits o ramas para comparar dos versiones cualesquiera del proyecto.

Sinopsis

git diff [<options>] [<commit>] [--] [<path>...]
git diff [<options>] --staged [<commit>] [--] [<path>...]
git diff [<options>] <commit> <commit> [--] [<path>...]
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (4)

Compara el área de preparación con el último commit: los cambios que guardará el próximo commit. --cached es un sinónimo.

RecomendadoRevisa exactamente lo que vas a confirmar

Ejemplo

git diff --staged

Muestra un resumen: cada archivo cambiado con su número de líneas cambiadas y luego un total.

RecomendadoVista rápida del tamaño de un cambio

Ejemplo

git diff --stat

Muestra solo los nombres de los archivos cambiados.

Cuando haga faltaLista los archivos cambiados, p. ej. para pasarlos a un linter

Ejemplo

git diff --name-only

Muestra los nombres de los archivos cambiados con una letra: A añadido, M modificado, D eliminado, R renombrado.

Cuando haga faltaVer qué archivos se añadieron, modificaron o eliminaron

Ejemplo

git diff --name-status

Elegir la opción adecuada

Qué compara git diff

Elige los dos lados que quieres comparar

ComandoLado izquierdoLado derecho
git diffÁrea de preparaciónArchivos de trabajo
git diff --stagedÚltimo commitÁrea de preparación
git diff HEADÚltimo commitArchivos de trabajo
git diff A BCommit ACommit B

Ejemplos

Cambios no preparados

git diff

Lo que cambió en tus archivos pero aún no está preparado.


Cambios preparados

git diff --staged

Lo que contendrá el próximo commit.


Dos commits

git diff HEAD~1 HEAD

Lo que cambió el último commit.


Dos ramas

git diff main feature/login

Todo lo que difiere entre dos ramas.

Ejemplos de flujos de trabajo

1
git diff

Leer lo que cambiaste

2
git add app.js

Prepararlo

3
git diff --staged

Leer lo que se va a confirmar

4
git commit -m "Add to cart"

Commit

1
git diff main...feature/login --stat

Archivos que cambió la rama desde que se separó de main

2
git diff main...feature/login

Los cambios completos

Solución de problemas

git diff no muestra nada pero hay archivos cambiados

Causa: Los cambios ya están preparados

Usa git diff --staged (o git diff HEAD para ambos)

Falta un archivo nuevo en el diff

Causa: Los archivos sin seguimiento no se comparan

Prepáralo con git add y luego usa git diff --staged

Todo el archivo aparece como cambiado

Causa: Cambiaron los finales de línea o los espacios

Prueba git diff -w para ignorar espacios y revisa core.autocrlf

Consejos y trampas

Buenas prácticas

  • ✓Revisa git diff --staged antes de cada commit.
  • ✓En cambios grandes, empieza con --stat y luego lee los detalles.
  • ✓Compara ramas con tres puntos (main...branch) para ver solo lo que añadió la rama.

Errores comunes

  • ✗Esperar que git diff muestre los cambios preparados — no lo hace; usa git diff --staged.
  • ✗Esperar ver archivos sin seguimiento en git diff: los archivos nuevos solo aparecen una vez añadidos.
  • ✗Confundir el orden de dos commits: git diff A B muestra cómo pasar de A a B.

Preguntas frecuentes

A:

git diff --staged (o su sinónimo git diff --cached).

A:

git diff HEAD compara el último commit con tus archivos de trabajo.

A:

git show <commit>, o git diff <commit>~1 <commit>.