Sinossi
git for-each-ref [--format=<fmt>] [--sort=<key>] [<pattern>...]
Descrizione
Il comando git for-each-ref itera su ogni ref (branch, tag, remote, note, stash) e applica un formato personalizzabile. È molto più potente che parsare l'output di git branch o git tag: puoi ordinare per versione, per data o per qualsiasi campo, e produrre output stabile leggibile da macchina.
Nell'uso quotidiano, git for-each-ref si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
Ricorri a for-each-ref negli script che hanno bisogno di metadati ref dettagliati: build di selettori di versione, dashboard di età dei branch, pulizia automatizzata di branch obsoleti o generatori di note di rilascio.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--format=<fmt> | Stringa di formato con segnaposto di campo. |
--sort=<key> | Ordina per campo (prefisso - per discendente). |
--count=<n> | Limita il numero di entry. |
--contains <commit> | Ref contenenti il commit dato. |
--merged <commit> | Ref mergiati nel commit dato. |
--points-at <commit> | Ref che puntano direttamente a un commit. |
Esempi
git for-each-ref --format='%(refname:short) %(objectname:short)' refs/heads/
# Nomi branch locali con SHA abbreviati
git for-each-ref --sort=-committerdate --count=10 \
--format='%(committerdate:short) %(refname:short)' refs/heads/
# Top 10 branch aggiornati più di recente
git for-each-ref --sort=-v:refname --format='%(refname:short)' refs/tags/ | head -5
# Cinque tag semver più alti
Errori comuni
Dimenticare lo slash finale su pattern refs/heads/ può fare match a ref non intenzionali. Le stringhe di formato possono essere complicate — quota i nomi dei campi tra parentesi. --sort=v:refname funziona solo su tag che assomigliano a versioni.
Comandi correlati
git branch, git tag, git ls-remote, git rev-parse