Come ispezionare la cronologia di un progetto con Git Log

Come ispezionare la cronologia di un progetto con Git Log

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. Fortunatamente, 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 utilizzare un programma a tua scelta, come il più pager .

Ecco alcuni output di git log da il repository del codice sorgente git si:



commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origin/master, origin/HEAD)
Author: Junio C Hamano
Date: Mon Jun 14 13:23:28 2021 +0900
The second batch
Signed-off-by: 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.)

perché la mia app youtube non funziona?

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 è il --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 del 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

Imparentato: Come creare un nuovo ramo in Git

Uscita graziosa personalizzata

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

il controller xbox one si spegne immediatamente
git log --pretty=short

È 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
  • %h hash commit abbreviato
  • %ad data dell'autore
  • %Insieme a 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=short

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 changed, 48 insertions(+), 2 deletions(-)

Alla fine di ogni commit. Vedrai spesso questo tipo di riepilogo, ad esempio in tutte le pagine di 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 filename

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: |_+_|
  2. Visualizza i commit che sono in branch, ma non main: |_+_|
  3. Visualizza i commit che esistono solo in branch o main: |_+_|

Differenze tra due tag

Proprio come puoi visualizzare la cronologia tra i rami usando 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 --oneline origin/branch..origin/main

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 log --oneline origin/ main ..origin/ branch

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 hai una buona comprensione della storia di un progetto, sarai in una posizione ideale per contribuire tu stesso.

il tuo pc ha riscontrato un problema e deve essere riavviato. stiamo solo raccogliendo alcune informazioni sugli errori e poi
Condividere Condividere Tweet 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(58 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 suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti