W3docs

git show

Impara il comando git show per ispezionare commit, tag e file a qualsiasi revisione. Opzioni ed esempi pratici.

Definizione

Il comando git show visualizza i dettagli di un oggetto Git — il più delle volte un commit. Per un commit, stampa il messaggio di log insieme al diff completo delle modifiche introdotte, offrendoti un quadro completo di una singola revisione. Può anche mostrare tag, alberi e il contenuto di un file così come esisteva in qualsiasi punto della cronologia.

Utilizza git show quando sai già quale oggetto ti interessa e vuoi vedere tutto ciò che lo riguarda in una sola schermata. Questa pagina tratta come mostrare i commit, come leggere l'output, come visualizzare un file a qualsiasi revisione, come ispezionare i tag, le opzioni più utili e in cosa il comando differisce da git log e git diff.

Mostrare un commit

Senza argomenti, git show visualizza il commit più recente (HEAD): il suo autore, la data, il messaggio e le modifiche introdotte.

git show

Per ispezionare qualsiasi altro commit, passa il suo hash, un nome di branch o un riferimento relativo:

git show a1b2c3d        # by abbreviated hash
git show HEAD~2         # the commit two steps before HEAD
git show main           # the tip of the main branch
git show HEAD@{1}       # where HEAD pointed one move ago (via the reflog)

L'output combina ciò che otterresti da git log e git diff per quel singolo commit.

Leggere l'output

Una visualizzazione tipica di un commit ha un'intestazione seguita da un diff unificato:

commit a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Author: Jane Dev <[email protected]m>
Date:   Mon Jun 9 14:02:11 2025 +0200

    Fix off-by-one error in pagination

diff --git a/src/page.js b/src/page.js
index 83db48f..f735c2e 100644
--- a/src/page.js
+++ b/src/page.js
@@ -10,7 +10,7 @@ function pageStart(page, perPage) {
-  return page * perPage;
+  return (page - 1) * perPage;
 }

L'intestazione identifica il commit, chi lo ha creato e quando. Il blocco diff --git mostra la modifica: le righe che iniziano con - sono state rimosse, quelle che iniziano con + sono state aggiunte, e l'intestazione del blocco @@ ... @@ indica i numeri di riga interessati. Questo è lo stesso formato patch che vedi con git diff.

Visualizzare un file a una revisione specifica

Un trucco molto utile è stampare un file esattamente com'era in un dato commit, senza effettuare alcun checkout. Usa la sintassi <commit>:<path>:

git show HEAD~3:src/index.js

Questo trasmette la vecchia versione di index.js al terminale, lasciando intatto il tuo albero di lavoro — ideale per confrontare o copiare uno snippet dal passato. Il percorso è relativo alla radice del repository, non alla directory corrente. Per ispezionare la versione staged di un file, usa i due punti senza commit:

git show :src/index.js   # the file as currently staged in the index

Ispezionare i tag

Quando punti git show su un tag annotato, vengono stampati il messaggio del tag e le informazioni sul tagger, seguite dal commit a cui il tag fa riferimento:

git show v1.0.0

È il modo più rapido per vedere chi ha creato un tag di release e a cosa punta. Consulta git tag per crearli. Un tag lightweight non ha metadati propri, quindi git show passa direttamente alla visualizzazione del commit che etichetta.

Mostrare più oggetti contemporaneamente

git show accetta più di un argomento e stampa ogni oggetto in sequenza, dal più recente al meno recente. Questo è utile per esaminare un piccolo insieme di commit correlati senza scorrere l'intera cronologia:

git show HEAD HEAD~1 v1.0.0

Opzioni utili

Per impostazione predefinita git show include il diff completo. Le opzioni seguenti riducono o rimodellano quell'output:

git show --stat HEAD         # summary of files changed and line counts
git show --name-only HEAD    # just the changed file names
git show -s HEAD             # suppress the diff; show only the commit message
git show --pretty=oneline HEAD   # compact one-line header
git show --format="%an %s" -s HEAD   # custom format: author name + subject

I segnaposto di --format (e --pretty) sono condivisi con git log: %an è il nome dell'autore, %s la riga dell'oggetto, %H l'hash completo e %ad la data dell'autore.

Opzioni comuni

ComandoDescrizione
git showMostra l'ultimo commit con il suo diff completo.
git show <commit>Mostra un commit specifico tramite hash, branch o riferimento.
git show <commit>:<file>Stampa il contenuto di un file così com'era in quel commit.
git show --stat <commit>Riepiloga quali file sono stati modificati e di quante righe.
git show --name-only <commit>Elenca solo i nomi dei file modificati.
git show -s <commit>Mostra solo il messaggio del commit, senza diff.
git show <tag>Mostra i metadati di un tag e il commit a cui punta.

git show vs git log e git diff

Questi tre comandi si sovrappongono ma servono a scopi diversi. git log scorre un intervallo di commit ed è pensato per navigare nella cronologia. git diff confronta due stati arbitrari. git show si concentra su un singolo oggetto e fornisce tutto ciò che lo riguarda — rendendolo la scelta naturale quando sai già quale commit ti interessa.

Un flusso di lavoro comune consiste nel trovare l'hash di un commit con git log o git blame, quindi passare quell'hash a git show per leggere la modifica completa nel dettaglio.

Pratica

Pratica
Cosa può fare 'git show'?
Cosa può fare 'git show'?
Was this page helpful?