Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git range-diff <range1> <range2>
git range-diff <base> <rev1> <rev2>

Descrizione

Il comando git range-diff confronta due sequenze di commit (tipicamente un branch prima e dopo un rebase) e mostra cosa è cambiato tra di loro a livello di patch. Questo è molto più utile di un normale git diff per rivedere i rebase, perché abbina i commit corrispondenti e evidenzia solo le differenze sostanziali.

Abbinalo con --reroll-count su format-patch per serie di patch upstream, o usalo localmente per verificare che un force-push abbia introdotto solo pulizia. L'output usa un formato personalizzato con = per commit invariati, ! per modificati, < e > per mancanti o aggiunti.

Nell'uso quotidiano, git range-diff si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--no-colorDisabilita output a colori.
--creation-factor=<n>Regolabile per il matching di commit attraverso range.
--dual-colorColora sia diff interni che esterni.
--no-patchMostra solo il riepilogo di matching, non le patch.
--notesInclude git notes nel confronto.

Esempi

git range-diff main..feature@{1} main..feature
# Confronta branch prima e dopo un rebase

git range-diff origin/main feature.v1 feature.v2
# Confronta due versioni di una serie di patch

git range-diff @{u}..HEAD HEAD@{1}..HEAD
# Confronta la punta corrente relativa-upstream con quella dell'ultima volta

Errori comuni

Range-diff abbina i commit usando un'euristica; se fai molti piccoli riordinamenti, l'output può abbinare commit inaspettati. Regola --creation-factor se necessario. Non confondere range-diff con git diff A..B — rispondono a domande diverse.

Comandi correlati

git diff, git log, git rebase, git format-patch