Uno dei servizi fondamentali forniti da Git è la cronologia del progetto. Poiché Git tiene traccia di tutte le modifiche ai file apportate all'interno di un repository, può offrire funzionalità di registrazione molto potenti. Puoi interrogare la cronologia di un progetto in molti modi diversi e puoi estrarre e visualizzare vari dati utilizzando un comando flessibile.

Il git log comando è enorme, il più grande di qualsiasi normale comando Git. Il suo manuale è lungo oltre 2.500 righe. Per fortuna, git log fornisce gran parte del suo comportamento più utile da poche opzioni chiave.

Registrazione di base con il comportamento predefinito

Per impostazione predefinita, git log mostra un elenco cronologico inverso di commit. Ogni commit include il suo hash, autore, data e messaggio di commit:

Il comando utilizza un cercapersone (ad es. less, more) per mostrare l'output completo in modo da poter navigare facilmente tra i risultati. Puoi configurare Git per usare un programma a tua scelta, come il più cercapersone.

instagram viewer

Ecco un po' di output di git log da il repository del codice sorgente git si:

commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origine/master, origine/HEAD)
Autore: Junio ​​C Hamano
Data: lun giu 14 13:23:28 2021 +0900
Il secondo lotto
Firmato da: Junio ​​C Hamano

Il risultato inizia con l'hash commit (670...) seguito da un elenco di rami che attualmente puntano a quel commit (TESTA -> maestro, eccetera.)

La riga successiva descrive l'autore di questo commit, fornendo il suo nome e indirizzo email.

La data e l'ora complete del commit seguono nella riga successiva.

Infine, viene visualizzato l'intero contenuto del messaggio di commit. Puoi controllare la maggior parte di tutto ciò che git log offre con le opzioni della riga di comando. Esistono due tipi principali di opzioni:

  • Formattazione, che definisce come Git visualizza ogni commit.
  • Filtraggio, che definisce quali commit git log include.

Oltre alle opzioni della riga di comando, git log accetta argomenti che specificano file, commit, rami o altri tipi di riferimento. Questi applicano un ulteriore filtraggio.

Formattazione dell'output del registro Git

Una delle regolazioni più semplici è la --una linea opzione che produce un output molto breve:

git log --oneline

Ogni riga nel registro ora contiene solo un hash di commit abbreviato e l'oggetto di il messaggio di commit. Questo è un modo eccellente per ottenere una panoramica dei commit recenti nel progetto:

Sfortunatamente, senza altro contesto, queste informazioni non sono sempre così utili. Potrebbe darti un'idea vaga del progetto, ma manca di date e altre informazioni utili su autori e file.

Visualizzazione di un grafico di diramazione

Il --grafico L'opzione consente di visualizzare le relazioni tra i rami. È molto semplice ma può aiutare a districare una storia complicata.

git log --oneline --graph

Relazionato: Come creare un nuovo ramo in Git

Uscita graziosa personalizzata

È possibile ottenere una formattazione più complicata specificandola in dettaglio utilizzando il pulsante --bella opzione. La sintassi va da molto semplice a molto più complessa, quindi consultare un manuale per i dettagli completi.

git log --pretty=corto

È essenzialmente lo stesso di git log senza la data o il messaggio completo:

git log --pretty=oneline

È equivalente a git log --oneline.

git log --pretty=fuller

Include molti dettagli. Separa anche autore e committer che potrebbero, in teoria, essere persone diverse:

Con il formato: variante, puoi fornire una stringa contenente qualsiasi contenuto tu voglia, inclusi i segnaposto che vengono sostituiti da vari dati. Ecco alcuni segnaposto di esempio:

  • %H commit hash has
  • %h hash commit abbreviato
  • %anno Domini data dell'autore
  • %ar data dell'autore, parente
  • %S oggetto del messaggio di commit
  • %b commit del corpo del messaggio
  • %p hash genitore abbreviato

Puoi aggiungere caratteri fissi all'output e colorarlo. Questo esempio mostra anche una variazione sul formato della data:

git log --pretty=format:'%C(auto) %h [%ad] %s' --date=breve

Nota che le parentesi racchiudono la data. Qualunque sia la formattazione scelta, se vuoi che l'output sia utile in una pipeline o per altre forme di elaborazione del testo, dovresti considerare come delimitare ogni parte dell'output.

Visualizzazione delle differenze nel registro

Un dettaglio importante quando si guarda la cronologia di un repository sono le differenze stesse. Rappresentano ciò che è effettivamente cambiato nel codice, dopotutto! Per cominciare, puoi ottenere un riepilogo delle modifiche insieme a ogni commit usando --shortstat:

git log --shortstat

Questo aggiunge una riga come:

1 file modificato, 48 inserimenti(+), 2 eliminazioni(-)

Alla fine di ogni commit. Vedrai spesso questo tipo di riepilogo, ad esempio in tutte le pagine su GitHub, ed è un modo utile per giudicare rapidamente l'ambito di un commit specifico. Per informazioni più dettagliate, è possibile includere l'output completo della patch (diff) utilizzando il -p bandiera:

git log -p

Filtraggio dell'output del registro Git

Qualunque sia la formattazione che applichi, vedrai comunque il registro completo di tutti i commit nel ramo corrente. Anche se Git li suddivide in pagine, può comunque produrre molto output. Le seguenti opzioni consentono di personalizzare i commit inclusi nel registro.

Limitazione per importo

Se vuoi solo tagliare i risultati per mostrare i pochi commit più recenti, usa il -[numero] sintassi:

git log -2

Limitazione per data

Per limitare l'insieme di commit a un determinato intervallo di date, utilizzare il pulsante --da (--dopo) e --fino a (--prima) opzioni. Ognuno di questi richiede una data in formato ISO 8601. Puoi usare entrambi --da o --fino a da soli o entrambi insieme per specificare un intervallo. Le opzioni --dopo e --prima sono sinonimi.

git log --since="2021-01-01" --until="2021-05-01"

Limitazione per file

Git log può concentrarsi su un file specifico piuttosto che su ogni file nel tuo repository. Questo è ottimo per aiutarti a scoprire come un particolare file è cambiato nel tempo. Aggiungi semplicemente il nome del file alla fine del tuo comando git:

git log nomefile

Vedrai solo i commit che hanno interessato nome del file.

Differenze tra i rami

Potresti avere alcuni requisiti univoci durante la visualizzazione del registro di un ramo. Ad esempio, invece di vedere l'intera cronologia, potresti semplicemente voler vedere cosa è cambiato in quel ramo specifico. Git log può aiutare tramite il ref1..ref2 sintassi. Ci sono tre approcci leggermente diversi che puoi usare:

  1. Visualizza i commit che sono in main, ma non in branch:
    git log --oneline origin/branch..origin/main
  2. Visualizza i commit che sono in branch, ma non main:
    git log --oneline origin/principale..origine/ramo
  3. Visualizza i commit che esistono solo in branch o main:
    git log --oneline origine/ramo...origine/principale

Proprio come puoi visualizzare la cronologia tra i rami utilizzando il ref1..ref2 sintassi, puoi anche visualizzare la cronologia tra i tag allo stesso modo. Dopotutto, sia i tag che i rami sono tipi di riferimento.

git log --abbrev-commit --pretty=format:'%h %ar %s' v2.32.0-rc3..v2.32.0

Se stai preparando note di rilascio per un progetto più ampio, git shortlog dovrebbe essere il tuo primo punto di riferimento. Produce un elenco di autori con soggetti di commit accanto a loro. Puoi passargli un intervallo di riferimento per limitare la cronologia in modo simile a git log:

git shortlog v2.32.0-rc3..v2.32.0

Il comando git show è ancora più versatile di git log. Può funzionare con tag e altri tipi di oggetti git oltre la cronologia dei commit. Condivide molte opzioni con git log, ma ne avrai davvero bisogno solo se hai bisogno di scavare nei dettagli di livello inferiore.

Rivedere il passato con Git Log

Git log è un comando complicato, ma puoi sfruttare molto le sue opzioni di base. Sfogliare la cronologia di un repository è un ottimo modo per capire con quale frequenza si verificano i cambiamenti e quante persone li apportano. Una volta che avrai una buona comprensione della storia di un progetto, sarai in una posizione ideale per contribuire tu stesso.

E-mail
Unisciti alla tendenza del social coding e contribuisci ai repository GitHub

Vuoi esercitare i muscoli della programmazione e aiutare i progetti open source? Ecco come contribuire a GitHub.

Leggi Avanti

Argomenti correlati
  • Programmazione
  • GitHub
  • Suggerimenti per la codifica
Circa l'autore
Bobby Jack (54 articoli pubblicati)

Bobby è un appassionato di tecnologia che ha lavorato come sviluppatore software per quasi due decenni. È appassionato di giochi, lavora come editor di recensioni presso Switch Player Magazine ed è immerso in tutti gli aspetti dell'editoria online e dello sviluppo web.

Altro da Bobby Jack

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Ancora un passo…!

Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.

.