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

Sinopsis

git for-each-ref [--format=<fmt>] [--sort=<key>] [<pattern>...]

Descripción

El comando git for-each-ref itera sobre todas las refs (o un subconjunto especificado) y produce salida formateada. Es la herramienta plumbing para listar branches, tags y otras refs en formato parseable.

Soporta un poderoso lenguaje de formato (--format='%(refname:short) %(objectname:short)') para extraer exactamente los campos que necesitas en scripts.

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

Reach for for-each-ref in scripts that need detailed ref metadata: build version selectors, dashboards of branch ages, automated cleanup of stale branches, or release-note generators.

Opciones comunes

OpciónDescripción
--format=<fmt>Format string with field placeholders.
--sort=<key>Sort by field (prefix - for descending).
--count=<n>Limit number of entries.
--contains <commit>Refs containing the given commit.
--merged <commit>Refs merged into the given commit.
--points-at <commit>Refs that directly point at a commit.

Ejemplos

git for-each-ref --format='%(refname:short) %(objectname:short)' refs/heads/
# Local branch names with abbreviated SHAs

git for-each-ref --sort=-committerdate --count=10 \
  --format='%(committerdate:short) %(refname:short)' refs/heads/
# Top 10 most recently updated branches

git for-each-ref --sort=-v:refname --format='%(refname:short)' refs/tags/ | head -5
# Five highest semver tags

Errores comunes

Forgetting the trailing / on refs/heads/ patterns can match unintended refs. Format strings can be tricky — quote field names with parentheses. --sort=v:refname only works on tags that look like versions.

Comandos relacionados

git branch, git tag, git ls-remote, git rev-parse