Sinossi
git log [<options>] [<revision-range>] [[--] <path>...]
Descrizione
Il comando git log visualizza la storia dei commit raggiungibili da uno o più ref (default: HEAD). È uno degli strumenti più flessibili in Git, supportando filtri per autore, data, contenuto del messaggio, path di file e altro. Combinato con opzioni di formattazione, può produrre output adatto a changelog, audit e archeologia del codice.
Idiomi utili includono git log --oneline --graph --decorate --all per una vista compatta e visiva dell'intera storia, e git log -p per vedere le patch in linea. Argomenti pathspec restringono il log a commit che hanno toccato file specifici.
Nell'uso quotidiano, git log si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--oneline | Un commit per riga, SHA abbreviato + oggetto. |
--graph | Arte ASCII della struttura di branch e merge. |
--all | Include tutti i ref, non solo HEAD. |
-p, --patch | Mostra i diff accanto a ogni commit. |
--stat | Mostra statistiche di file modificati. |
--author=<pattern> | Filtra per autore. |
--since / --until | Filtra per data. |
-S <string> | Pickaxe: trova commit che aggiungono/rimuovono questa stringa. |
--follow | Traccia la storia di un singolo file attraverso i rename. |
Esempi
git log --oneline --graph --decorate --all
# Storia visiva compatta di tutto
git log -p src/auth.py
# Diff completi di ogni commit che tocca auth.py
git log -S "TODO" --since="2 weeks ago"
# Trova commit recenti che hanno aggiunto o rimosso "TODO"
git log --author="alice" --pretty=format:"%h %s" -n 20
# Ultimi 20 commit di alice in formato personalizzato
Errori comuni
Dimenticare che git log file.txt mostra solo i commit dove file.txt esisteva — usa --follow se è stato rinominato. Affidarsi troppo a --grep quando in realtà vuoi -S (che cerca nei diff, non nei messaggi). E su repo enormi, git log -p senza un path può produrre gigabyte di output.
Comandi correlati
git show, git blame, git shortlog, git diff