Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

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

Descrizione

Il comando git ls-remote interroga un remote (senza clone o fetch) e stampa lo SHA-1 di ogni ref accanto al nome del ref. È prezioso per scripting, pipeline CI e ispezione veloce — per esempio, trovare l'ultimo tag su un remote o controllare se un branch esiste. Poiché non scarica oggetti, è leggero e veloce anche contro repository molto grandi.

Puoi passare un URL direttamente senza prima configurare un remote: git ls-remote https://github.com/user/repo.git. Questo lo rende ideale per ispezione una tantum o script di build che risolvono una versione "latest".

Nell'uso quotidiano, git ls-remote si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--heads / -hLimita l'output ai ref dei branch.
--tags / -tLimita l'output ai ref dei tag.
--refsFiltra il peel dereferenziato dei tag annotated.
--symrefMostra a cosa puntano i ref simbolici (come HEAD).
--exit-codeEsce con codice non-zero se nessun ref corrispondente è trovato.
--sort=<key>Ordina i risultati per versione, refname, ecc.

Esempi

git ls-remote --heads origin
# Elenca tutti i branch su origin con i loro SHA

git ls-remote --tags --refs origin
# Elenca tutti i tag (saltando le dereferenze ^{})

git ls-remote https://github.com/git/git.git HEAD
# Mostra a cosa punta HEAD su un repo pubblico

git ls-remote --sort=-v:refname --tags origin 'v*' | head -1
# Trova il tag semver più alto

Errori comuni

Parsare l'output senza --refs mostra i tag annotated due volte (una come oggetto tag, una come name^{} per il commit sottostante). Usa --refs per sopprimere le righe peeled. L'autenticazione può fallire silenziosamente contro repo privati senza un credential helper — testa interattivamente prima.

Comandi correlati

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