git log
Informazioni sul comando git log, le sue opzioni più comuni ed esempi pratici con spiegazioni per esplorare la cronologia del progetto.

Il comando git log è la finestra sulla cronologia di un progetto. Elenca i commit registrati nel repository, dal più recente al più vecchio, e offre un ricco set di opzioni per filtrare, ricercare e riformattare quella cronologia. Questa pagina spiega cosa mostra git log, come leggere il suo output predefinito, le opzioni più utilizzate e come combinarle per rispondere a domande reali come "chi ha modificato questo file?" o "cosa è stato introdotto tra due rilasci?"
Cosa mostra git log
git log mostra gli snapshot committed di un repository — la cronologia permanente che Git ha memorizzato. Questa è una distinzione importante: git log non mostra mai il lavoro non committato. Per ispezionare la directory di lavoro e l'area di staging, usa git status; per vedere le modifiche riga per riga non ancora committate, usa git diff.
Eseguito senza argomenti, il comando risale all'indietro dal commit corrente (HEAD) attraverso ogni genitore:
git logUna voce tipica appare così:
commit 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b (HEAD -> master)
Author: Bob Smith <[email protected]>
Date: Mon Jun 16 10:24:31 2026 +0400
Add login form validationOgni commit elenca il suo hash SHA-1 a 40 caratteri, l'autore, la data e il messaggio del commit. Per impostazione predefinita l'output viene paginato: premi Space per scorrere, q per uscire. I commit sono mostrati in ordine cronologico inverso.
Opzioni più utilizzate
L'output di log può essere personalizzato in molti modi, dal filtraggio dei commit visualizzati alla stampa in un formato completamente definito dall'utente. Ecco le opzioni che utilizzerai più spesso:
| Comando | Descrizione |
|---|---|
git log | Mostra la cronologia completa dei commit nel formato predefinito. Usa Space per scorrere e q per uscire se l'output si estende su più schermate. |
git log -n <limit> | Limita il numero di commit. Ad esempio, git log -n 2 mostra solo i 2 commit più recenti. |
git log --oneline | Condensa ogni commit su una singola riga (hash breve + riepilogo) — ideale per una panoramica rapida. |
git log --stat | Aggiunge l'elenco dei file modificati e il conteggio delle righe aggiunte ed eliminate per ogni commit. |
git log -p | Mostra la patch completa (diff) introdotta da ogni commit. |
git log --author="<pattern>" | Filtra i commit di un autore specifico. <pattern> può essere una stringa semplice o un'espressione regolare. |
git log --grep="<pattern>" | Filtra i commit il cui messaggio corrisponde a <pattern> (stringa o regex). |
git log <since>..<until> | Mostra solo i commit raggiungibili da <until> ma non da <since>. Ogni lato può essere un ID commit, un nome di branch, un tag, HEAD o qualsiasi altro riferimento di revisione. |
git log <file> | Mostra solo i commit che hanno toccato il file specificato — la sua cronologia delle modifiche. |
git log --graph --decorate --oneline | Disegna un grafico testuale della struttura dei branch/merge, etichetta branch e tag, e stampa una riga per commit. |
git log --since="<date>" | Mostra i commit più recenti di una data (ad esempio "2 weeks ago" o "2026-01-01"). |
git log --until="<date>" | Mostra i commit più vecchi di una data. |
git log --all | Mostra i commit di ogni branch e ref, non solo del branch corrente. |
Una panoramica compatta
Per scorrere rapidamente la cronologia, --oneline è lo strumento principale. Combinato con --graph e --decorate, trasforma il log in una mappa leggibile dei tuoi branch:
git log --graph --decorate --oneline* 1a2b3c4 (HEAD -> master) Add login form validation
* 9f8e7d6 Fix typo in README
| * 4c5d6e7 (feature) Start checkout flow
|/
* 0a1b2c3 Initial commitGli asterischi e le linee di collegamento mostrano come i branch si sono divergi e uniti; (HEAD -> master) e (feature) sono le decorazioni aggiunte da --decorate.
Filtrare la cronologia
Il vero potere di git log sta nel restringere migliaia di commit a quelli che ti interessano.
Per autore e contenuto
Per trovare ogni modifica effettuata da un particolare autore su un singolo file, combina --author, -p e un percorso di file:
git log --author="Bob Smith" -p w3docs.txtQuesto mostra il diff completo di ogni modifica che Bob ha apportato a w3docs.txt. Per cercare nei messaggi dei commit invece che negli autori, usa --grep:
git log --grep="bugfix"Per data
git log --since="2 weeks ago" --until="yesterday"--since e --until accettano date assolute (2026-01-01) o espressioni relative in formato leggibile ("3 days ago", "last Monday").
Tra due riferimenti
La sintassi <since>..<until> (doppio punto) risponde alla domanda "cosa c'è in B che non è in A?" — perfetta per confrontare i branch prima di un merge:
git log --oneline master..some-featureQuesto elenca ogni commit su some-feature che non è ancora arrivato su master. Inverti i lati per vedere il contrario. Poiché i tag funzionano anch'essi come riferimenti di revisione, la stessa sintassi è ottima per le note di rilascio:
git log --oneline v1.0..v2.0Ispezionare la cronologia di un singolo file
Quando devi capire come si è evoluto un file, passa il suo percorso:
git log --oneline -- src/app.jsIl separatore -- dice a Git che tutto ciò che segue è un percorso, il che evita ambiguità quando un file e un branch condividono lo stesso nome. Per vedere le modifiche effettive insieme alla cronologia, aggiungi -p. Se invece hai bisogno di sapere chi ha modificato per ultimo ogni riga, usa git blame. Per ispezionare il contenuto completo di un commit specifico, usa git show.
Errori comuni
git logmostra solo la cronologia committata. Il lavoro in stash, in staging o non salvato non comparirà — vedi git status e git stash per questi.- Per impostazione predefinita viene mostrato solo il branch corrente. Aggiungi
--allper includere ogni branch, oppure specifica esplicitamente un branch/ref. - I commit persi possono spesso essere recuperati. Anche i commit a cui nessun branch punta potrebbero essere ancora raggiungibili tramite git reflog.
A..Bnon è simmetrico.master..featureefeature..masterrestituiscono commit diversi; l'ordine è importante.