Il comando git log permette di visualizzare la cronologia dei commit, filtrarla e cercare per specifiche modifiche. Così come git status opera sul working directory e staging area, git log opera sulla history dei commit.
git log offre moltissime opzioni per personalizzare la visualizzazione dei commit e per filtrare. Qui di seguito alcune delle opzioni e configurazioni più utili.
git log
mostra l’intera cronologia usando la formattazione di default formata dal commit ID (o SHA), l’autore, la data e il messaggio completo di commit. È possibile premere spazio per scorrere e q per uscire.
git log -n <LIMITE>
Mostra solo il numero indicato di commit, ovviamente i più recenti
git log --oneline
Condensa ogni commit in una singola riga, utile per avere una panoramica delle modifiche
git log --stat
Aggiunge informazioni su quali file sono cambiati per ogni commit e il numero di rihe aggiunte/modificate
git log -p
Mostra le effettive differenze apportate per ogni file di ogni commit.
git log --author="<pattern>"
Filtra i commit, mostrando solo quelli che includono <pattern> nella email dell’autore del commit.
git log --grep="<pattern>"
Filtra i commit, mostrando solo quelli che includono <pattern> nel testo del messaggio di commit.
git log <file>
Filtra i commit, mostrando solo quelli che hanno apportato modifiche al file <file>
git log <inizio>..<fine>
Filtra i commit, mostrando solo quelli tra <inizio> e <fine> (notare l’operatore ..). <inizio> e <fine> possono essere un commit ID, un nome di branch, un nome di tag o qualunque altro riferimento di revision.
git log --graph --decorate --oneline
Versione “avanzata” per visualizzare una panoramica più completa di un repository. L’opzione –graph include delle “linee” che permettono di vedere le varie ramificazioni dei commit, mentre –decorate aggiunge nomi di branch e tag sui singoli commit.
Le opzioni offerte da git log sono molteplici, tutto dipende da cosa state cercando nella history del progetto. Per esempio, se voleste sapere quali sono stati i vostri commit negli ultimi 5 giorni sul repository, potreste provare un
git log --since '3 days ago' --oneline --author $(git config user.email)