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

Sinopsis

git ls-remote [--heads] [--tags] [<repository> [<refs>...]]

Descripción

El comando git ls-remote consulta un remoto (sin clonar ni hacer fetch) e imprime el SHA-1 de cada ref junto al nombre de la ref. Es invaluable para scripting, pipelines de CI e inspección rápida: por ejemplo, encontrar el último tag en un remoto o verificar si un branch existe. Como no descarga objetos, es ligero y rápido incluso contra repositorios muy grandes.

Puedes pasar una URL directamente sin configurar primero un remoto: git ls-remote https://github.com/user/repo.git. Esto lo hace ideal para inspección puntual o scripts de build que resuelven una versión "última".

En el uso diario, git ls-remote se integra con scripts.

Entender cómo git ls-remote interactúa con el modelo de datos de Git ayuda a usarlo correctamente.

Opciones comunes

OpciónDescripción
--heads / -hLimita la salida a refs de branch.
--tags / -tLimita la salida a refs de tag.
--refsFiltra el peel desreferenciado de tags anotados.
--symrefMuestra a qué apuntan las refs simbólicas (como HEAD).
--exit-codeSale con código distinto de cero si no se encuentran refs coincidentes.
--sort=<key>Ordena resultados por versión, refname, etc.

Ejemplos

git ls-remote --heads origin
# Lista todos los branches en origin con sus SHAs

git ls-remote --tags --refs origin
# Lista todos los tags (saltando ^{} dereferenciados)

git ls-remote https://github.com/git/git.git HEAD
# Muestra a qué apunta HEAD en un repo público

git ls-remote --sort=-v:refname --tags origin 'v*' | head -1
# Encuentra el tag semver más alto

Errores comunes

Parsear la salida sin --refs muestra los tags anotados dos veces (una como objeto tag, otra como name^{} para el commit subyacente). Usa --refs para suprimir las líneas peeled. La autenticación puede fallar silenciosamente contra repos privados sin un asistente de credenciales: prueba interactivamente primero.

Comandos relacionados

git remote, git fetch, git tag, git for-each-ref