Sinossi
git ls-tree [-r] [-d] [-l] [--name-only] <tree-ish> [<path>...]
Descrizione
Il comando git ls-tree elenca le entry (mode, type, SHA, name) di un oggetto tree. Con -r ricorre nelle sottodirectory. È l'equivalente plumbing di ls su un tree Git. L'output è una entry per riga, adatto per pipe in altri strumenti.
Nell'uso quotidiano, git ls-tree si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
La maggior parte degli sviluppatori ricorre a git show <rev>:<path> o git ls-files invece. ls-tree brilla negli script che hanno bisogno di informazioni esatte di mode/type/SHA, o quando si attraversa un tree di qualsiasi commit (non solo l'index di HEAD).
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-r | Ricorre nei sottotree. |
-d | Mostra solo directory (tree). |
-l | Include la dimensione delle entry blob. |
--name-only | Mostra solo nomi file. |
-z | Output terminato da NUL per parsing sicuro. |
--full-tree | Non restringe per directory corrente. |
Esempi
git ls-tree HEAD
# Entry di top-level del tree di HEAD
git ls-tree -r HEAD --name-only
# Tutti i path di file all'HEAD
git ls-tree -r -l v1.0 src/
# Dimensioni e SHA per ogni file sotto src/ a v1.0
git ls-tree HEAD -- 'docs/*.md'
# Solo file markdown in docs/
Errori comuni
Confondere path relativi alla working directory vs relativi alla root del repo. Usa --full-tree per output non ambiguo relativo alla root. Senza -r, viene mostrato un solo livello — facile perdere file annidati.
Comandi correlati
git ls-files, git show, git cat-file, git diff-tree