Sinossi
git rev-list [<options>] <commit>...
Descrizione
Il comando git rev-list emette gli SHA dei commit raggiungibili da uno o più punti di partenza, opzionalmente escludendo altri. È il cavallo di battaglia dietro git log, git bisect e molti altri comandi. Con i suoi molti filtri, può rispondere a "quanti commit tra A e B", "lo SHA della merge base", "tutti i commit non su main", e così via.
Nell'uso quotidiano, git rev-list si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
Utenti esperti e toolsmith usano rev-list negli script. Gli sviluppatori quotidiani usano git log, che è costruito sopra rev-list ma produce output user-friendly.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--count | Stampa solo il numero di commit. |
--max-count=<n> | Limita quanti commit elencare. |
--reverse | Output dal più vecchio al più nuovo. |
--no-merges | Esclude merge commit. |
--first-parent | Segue solo il primo parent di ogni merge. |
--ancestry-path | Restringe a commit tra due endpoint. |
--all | Include ogni ref come punto di partenza. |
Esempi
git rev-list --count HEAD
# Numero totale di commit raggiungibili da HEAD
git rev-list main..feature
# SHA unici a feature
git rev-list --no-merges --since="1 month ago" main
# Commit non merge nell'ultimo mese
git rev-list --max-parents=0 HEAD
# Trova commit root (senza parent)
Errori comuni
Dimenticare che i range con due punti escludono i commit raggiungibili dal lato sinistro. --first-parent cambia significativamente il significato di "antenato". Su repo enormi, rev-list illimitato può essere lento — abbinalo con --max-count o filtri di path.
Comandi correlati
git log, git rev-parse, git merge-base, git bisect