W3docs

git log

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

gitlog

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 log

Una 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 validation

Ogni 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:

ComandoDescrizione
git logMostra 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 --onelineCondensa ogni commit su una singola riga (hash breve + riepilogo) — ideale per una panoramica rapida.
git log --statAggiunge l'elenco dei file modificati e il conteggio delle righe aggiunte ed eliminate per ogni commit.
git log -pMostra 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 --onelineDisegna 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 --allMostra 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 commit

Gli 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.txt

Questo 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-feature

Questo 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.0

Ispezionare la cronologia di un singolo file

Quando devi capire come si è evoluto un file, passa il suo percorso:

git log --oneline -- src/app.js

Il 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 log mostra 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 --all per 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..B non è simmetrico. master..feature e feature..master restituiscono commit diversi; l'ordine è importante.

Esercitazione

Pratica
Quali sono le funzionalità e le opzioni del comando 'git log'?
Quali sono le funzionalità e le opzioni del comando 'git log'?
Was this page helpful?