Por Anónimo (no verificado) , 29 Abril 2026

Sinopsis

git ls-tree [-r] [-d] [-l] [--name-only] <tree-ish> [<path>...]

Descripción

El comando git ls-tree lista los contenidos de un objeto tree: archivos, modos, tipos y SHAs. A diferencia de git ls-files (que muestra el index), opera sobre cualquier tree en cualquier commit.

Usado por scripts que necesitan navegar la estructura de directorios en una revisión específica. Combinado con -r, recurse en subtrees.

En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.

Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.

Cuándo usar

Most developers reach for git show <rev>:<path> or git ls-files instead. ls-tree shines in scripts that need exact mode/type/SHA information, or when traversing a tree of any commit (not just HEAD's index).

Opciones comunes

OpciónDescripción
-rRecurse into subtrees.
-dShow only directories (trees).
-lInclude the size of blob entries.
--name-onlyShow only file names.
-zNUL-terminate output for safe parsing.
--full-treeDon't restrict by current directory.

Ejemplos

git ls-tree HEAD
# Top-level entries of HEAD's tree

git ls-tree -r HEAD --name-only
# All file paths at HEAD

git ls-tree -r -l v1.0 src/
# Sizes and SHAs for every file under src/ at v1.0

git ls-tree HEAD -- 'docs/*.md'
# Just markdown files in docs/

Errores comunes

Mixing up working-directory-relative versus repo-root-relative paths. Use --full-tree for unambiguous root-relative output. Without -r, only one level is shown — easy to miss nested files.

Comandos relacionados

git ls-files, git show, git cat-file, git diff-tree