Ce face git for-each-ref
git for-each-ref parcurge referințele din depozit (refs/heads/ pentru ramuri, refs/tags/ pentru etichete, refs/remotes/ pentru ramurile de pe server) și afișează pentru fiecare câmpurile pe care le ceri în --format.
Este comanda potrivită pentru rapoarte și scripturi: „ce ramuri au fost atinse ultima dată și de cine”, „care e cea mai nouă etichetă”, „ce ramuri nu mai au corespondent pe server”. Câmpurile se scriu ca %(refname:short), %(committerdate:short), %(authorname), %(subject).
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
--format=FORMAT |
Șablonul fiecărei linii, cu câmpuri de tip %(nume). |
--sort=CHEIE |
Ordinea; prefixul - inversează (de exemplu --sort=-committerdate). |
--count=N |
Afișează doar primele N referințe. |
--merged / --no-merged [commit] |
Doar referințele integrate (sau neintegrate) în commit-ul dat. |
--contains COMMIT |
Doar referințele care conțin commit-ul dat. |
refs/heads/, refs/tags/ |
Tipare care limitează tipul referințelor listate. |
Exemple
Exemplul 1: Ramurile, de la cea mai recent modificată
Datele commit-urilor sunt fixate pentru un rezultat stabil.
git init -q -b main magazin
cd magazin
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
c() { GIT_AUTHOR_DATE="$1T10:00:00+03:00" GIT_COMMITTER_DATE="$1T10:00:00+03:00" git commit -q --allow-empty -m "$2"; }
c 2026-09-01 "Start"
git switch -q -c feature/cos && c 2026-10-15 "Cos de cumparaturi"
git switch -q main && git switch -q -c fix/tva && c 2026-10-02 "TVA corect"
git for-each-ref --sort=-committerdate \
--format='%(committerdate:short) %(refname:short) - %(subject)' refs/heads/
Rezultat
2026-10-15 feature/cos - Cos de cumparaturi
2026-10-02 fix/tva - TVA corect
2026-09-01 main - Start
Exemplul 2: Cea mai nouă etichetă de versiune
--sort=-v:refname sortează numele ca versiuni (v1.10 după v1.9), nu alfabetic.
git init -q -b main aplicatie
cd aplicatie
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
git commit -q --allow-empty -m "Start"
for v in v1.2.0 v1.9.0 v1.10.0; do git tag "$v"; done
git for-each-ref --sort=-v:refname --count=1 --format='%(refname:short)' refs/tags/
Rezultat
v1.10.0
Greșeli frecvente
- Folosirea
--sort=refnamepentru versiuni: sortarea alfabetică punev1.10.0înaintea luiv1.9.0. Pentru numere de versiune foloseștev:refname(sauversion:refname). - Parsarea ieșirii lui
git branchîn scripturi în loc degit for-each-ref: formatul luigit brancheste pentru oameni și poate conține culori sau marcajul*.
Comenzi înrudite
git branch: Listează, creează, redenumește sau șterge ramuri (branches) de dezvoltare.git tag: Creează, listează, șterge sau verifică etichete de versiune (release tags) care marchează puncte cheie din istoric.git rev-parse: Transformă nume de ramuri, etichete sau expresii (HEAD~2, main^) în hash-uri și răspunde la întrebări despre depozit în scripturi.