Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
-rRicorre nei sottotree.
-dMostra solo directory (tree).
-lInclude la dimensione delle entry blob.
--name-onlyMostra solo nomi file.
-zOutput terminato da NUL per parsing sicuro.
--full-treeNon 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