Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
--countStampa solo il numero di commit.
--max-count=<n>Limita quanti commit elencare.
--reverseOutput dal più vecchio al più nuovo.
--no-mergesEsclude merge commit.
--first-parentSegue solo il primo parent di ogni merge.
--ancestry-pathRestringe a commit tra due endpoint.
--allInclude 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