Par Anonyme (non vérifié) , 29 avril 2026

Le problème que résout range-diff

Supposez qu'un contributeur publie v1 d'une série de patches, puis v2 après feedback. Comme relecteur, vous voulez voir ce qui a changé entre les versions, pas le diff cumulatif.

L'invocation basique

git range-diff main..v1 main..v2

Lire la sortie

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 identiques.
  • ! commits avec même intention mais contenu différent.
  • > commits seulement à droite.
  • < commits seulement à gauche.

Logique d'appariement

Range-diff utilise les métadonnées du commit pour apparier les commits entre les plages.

Relire des PRs force-pushed

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 pendant le rebase

git rebase -i HEAD~5
git range-diff ORIG_HEAD HEAD

Range-diff pour releases

git range-diff origin/release-1.4 origin/release-1.5

Régler la comparaison

git range-diff --creation-factor=80 base..v1 base..v2
git range-diff --no-patch base..v1 base..v2

Intégration avec format-patch

git format-patch --range-diff=v1 --cover-letter -3