El problema que resuelve range-diff
Supón que un contribuidor publica v1 de una serie de parches, luego v2 después de feedback. Como revisor, quieres ver qué cambió entre las versiones, no el diff acumulativo.
La invocación básica
git range-diff main..v1 main..v2
Leer la salida
1: abc1234 = 1: def5678 Add login form
2: 234abcd ! 2: 9876fed Validate email format
@@ src/login.js
- if (!email.includes("@")) {
+ if (!EMAIL_REGEX.test(email)) {
3: <new> > 3: 111aaaa Add unit tests for validator
=commits idénticos.!commits con la misma intención pero contenido diferente.>commits solo a la derecha.<commits solo a la izquierda.
Lógica de emparejamiento
Range-diff usa metadatos del commit (asunto, autor, huella de contenido) para emparejar commits entre los rangos.
Revisar PRs con force-push
git fetch origin pr/123:pr-123-old
git fetch origin pr/123
git range-diff main..pr-123-old main..origin/pr/123
Range-diff durante rebase
git rebase -i HEAD~5
git range-diff ORIG_HEAD HEAD
Range-diff para releases
git range-diff origin/release-1.4 origin/release-1.5
Ajustar la comparación
git range-diff --creation-factor=80 base..v1 base..v2
git range-diff --no-patch base..v1 base..v2
Integración con format-patch
git format-patch --range-diff=v1 --cover-letter -3