git diff sirve para ver diferencias entre estados del código.
Dicho simple:
te muestra qué cambió, línea por línea.
Es de los comandos más útiles de Git, porque antes de hacer add, commit, stash o cualquier otra travesura, necesitas ver qué demonios cambiaste realmente.
git diff puede comparar varias cosas:
- cambios en tus archivos sin stage
- cambios que ya están en staging
- diferencias entre commits
- diferencias entre ramas
- diferencias de un archivo específico
git diffEsto compara:
- tu working directory
- contra el staging area
O sea, te muestra lo que cambiaste pero todavía no has hecho git add.
Supón que cambiaste esto:
Antes:
const port = 3000;Después:
const port = 4000;git diff mostrará algo así:
-const port = 3000;
+const port = 4000;- línea con
-→ lo que estaba antes - línea con
+→ lo que está ahora
git diff --stagedo también:
git diff --cachedEsto compara:
- staging
- contra el último commit
Sirve para revisar exactamente qué va a entrar en el próximo commit.
Muchos hacen git add . como si fuera hechicería automática y ni revisan. Luego el commit trae medio proyecto, un archivo .env, tres logs y la dignidad hecha pedazos.
git diff
git add archivo.txt
git diff --stagedPrimero ves lo no staged, luego ves lo staged.
git diff <commit1> <commit2>Ejemplo:
git diff a1b2c3d d4e5f6gEso muestra la diferencia entre esos dos commits.
git diff main feature/loginTe muestra qué cambia entre ambas ramas.
Muy útil para entender:
- qué trae una rama
- qué falta
- si realmente el PR hace lo que dice y no metió basura lateral
git diff archivo.txtO staged:
git diff --staged archivo.txtEso limita la salida a un solo archivo.
git diff --name-onlyEso no muestra líneas, solo nombres.
Ejemplo:
src/app.ts
src/auth.ts
README.md
Sirve cuando quieres panorama general sin tragarte el diff completo.
git diff --statEjemplo:
src/app.ts | 10 +++++-----
src/auth.ts | 5 +++--
README.md | 2 +-
Eso da una vista compacta de cuánto cambió cada archivo.
git diff HEADEsto muestra todo lo distinto entre tu estado actual y el último commit, incluyendo cambios staged y no staged.
Esto suele confundir bastante:
git diffgit diff --stagedLa diferencia importa mucho. Porque un archivo puede estar cambiado en ambos niveles:
- una parte ya agregada al stage
- otra parte aún no staged
Git permite ese caos elegante.
Aquí muchos repiten comandos sin entenderlos.
git diff main featureYa funciona.
git diff main...featureEso compara desde el ancestro común hasta feature.
Es útil para revisar qué introduce realmente la rama feature respecto a donde se separó de main.
Para PRs suele ser más representativo.
git diff --word-diffÚtil para texto, markdown o documentación. Menos útil para código largo donde el ruido puede ser peor que el problema.
git status
git diff
git add .
git diff --staged
git commit -m "Fix validation logic"Ese flujo evita commits ciegos.
Usa git diff para:
- revisar cambios antes de
git add - revisar qué vas a commitear
- comparar ramas
- revisar un commit contra otro
- entender conflictos o regresiones
Te dice qué archivos cambiaron.
Te dice qué líneas cambiaron.
Ejemplo:
git status dice:
modified: user.service.ts
git diff te dice exactamente qué se tocó en ese archivo.
git diffgit diff --stagedgit diff HEADgit diff commit1 commit2git diff main featuregit diff --name-onlygit diff --statAntes de hacer commit, revisa siempre esto:
git diff --staged