Sinopsis
git range-diff <range1> <range2>
git range-diff <base> <rev1> <rev2>
Descripción
El comando git range-diff compara dos rangos de commits, mostrando cómo difieren commit-a-commit. Es la mejor herramienta para revisar lo que cambió entre dos versiones de un branch rebaseado o una serie de patches.
A diferencia de git diff old-tip new-tip, range-diff intenta emparejar commits entre rangos basándose en mensaje y patch, mostrando los cambios reales en cada commit en lugar de un diff combinado confuso.
En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
--no-color | Disable color output. |
--creation-factor=<n> | Tunable for matching commits across ranges. |
--dual-color | Color both inner and outer diffs. |
--no-patch | Show only the matching summary, not patches. |
--notes | Include git notes in the comparison. |
Ejemplos
git range-diff main..feature@{1} main..feature
# Compare branch before and after a rebase
git range-diff origin/main feature.v1 feature.v2
# Compare two patch series versions
git range-diff @{u}..HEAD HEAD@{1}..HEAD
# Compare current upstream-relative tip with what it was last time
Errores comunes
Range-diff matches commits using a heuristic; if you make many small reorderings, the output may pair unexpected commits. Tune --creation-factor if needed. Don't confuse range-diff with git diff A..B — they answer different questions.
Comandos relacionados
git diff, git log, git rebase, git format-patch