Introduzione
Descrizione sintetica dei comandi git status, git log, git tag e git blame, con esempi d'uso di base e più comuni.

Una volta che hai un repository Git con un po' di storia, la maggior parte del lavoro quotidiano non riguarda la modifica dei file, ma la comprensione del loro stato attuale e passato. Prima di fare commit, push o ripristini, di solito vuoi rispondere a domande come: Cosa ho modificato ma non ancora salvato? Chi ha scritto questa riga, e perché? Quando è stato introdotto questo bug? A quale release appartiene questo commit?
Questa parte del tutorial tratta i quattro comandi a cui si ricorre più spesso quando si esamina un repository invece di modificarlo:
| Comando | A cosa risponde | Ambito |
|---|---|---|
git status | Cosa è cambiato dall'ultimo commit e cosa è in staging? | Directory di lavoro + area di staging |
git log | Qual è la cronologia dei commit? | Solo snapshot committati |
git tag | Quali commit sono notevoli (es. release)? | Puntatori con nome ai commit |
git blame | Chi ha modificato per ultimo ogni riga, e in quale commit? | Paternità riga per riga di un file |
Ogni comando è riassunto di seguito con un esempio rapido. Le pagine successive coprono ogni opzione nel dettaglio.
git status
Il comando git status mostra lo stato della directory di lavoro e dell'area di staging, permettendo di vedere quali modifiche sono pronte per il prossimo commit e quali file non sono ancora tracciati da Git. Non mostra nessuna cronologia dei commit — solo la differenza tra i file attuali e l'ultimo commit.
Eseguilo all'interno di qualsiasi repository:
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txtQui index.html è in staging (andrà nel prossimo commit), style.css è modificato ma non in staging, e notes.txt è nuovo e non tracciato. Rendi git status un'abitudine prima di ogni commit, così non farai mai accidentalmente commit — o dimenticherai — un file.
git log
Il comando git log esamina la cronologia dei commit di un repository e aiuta a trovare una versione specifica di un progetto. Elenca, filtra e cerca i commit — ma opera solo sulla cronologia committata, quindi tutto ciò che non è ancora stato committato non apparirà.
$ git log --oneline -3
9a3c1f4 (HEAD -> main) Fix navbar alignment on mobile
1d72b08 Add contact form validation
f0e5a91 Initial commitIl flag --oneline condensa ogni commit al suo hash breve e all'oggetto. Puoi filtrare per autore (--author), per data (--since, --until), o per contenuto (-S "searchterm") per individuare esattamente quando è avvenuta una modifica. Per ispezionare un singolo commit per intero, abbina git log a git show.
git tag
I tag sono riferimenti che puntano a punti specifici e notevoli nella cronologia di Git. Il loro scopo principale è contrassegnare una release — ad esempio v1.0.0. A differenza di un branch, un tag non si sposta man mano che aggiungi nuovi commit; una volta creato, punta in modo permanente allo stesso snapshot.
$ git tag v1.0.0 # create a lightweight tag on the current commit
$ git tag # list existing tags
v1.0.0
$ git tag -a v1.1.0 -m "Release 1.1.0" # create an annotated tag with a messageUn tag lightweight è solo un nome per un commit, mentre un tag annotated (-a) memorizza anche il creatore del tag, una data e un messaggio — i tag annotati sono consigliati per le release. I tag non vengono inviati automaticamente; li condividi con git push origin v1.0.0 (o git push --tags).
git blame
Il comando git blame mostra i metadati dell'autore associati a ogni riga di un file: il commit, l'autore e la data dell'ultima modifica di quella riga. È lo strumento ideale per capire perché esiste una determinata riga e a chi rivolgersi per informazioni.
$ git blame -L 1,3 index.html
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 1) <!DOCTYPE html>
1d72b08c (John Roe 2024-02-28 14:05:33 +0000 2) <html lang="en">
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 3) <head>Il flag -L 1,3 limita l'output alle righe 1–3. Ogni riga è preceduta dall'hash breve del commit, dall'autore e dal timestamp dell'ultima modifica. Per approfondire uno di quei commit, copia il suo hash in git show o git log.
Esaminare vs. modificare
Un modello mentale utile: questi comandi sono di sola lettura. Nessuno tra git status, git log, git tag (quando si elencano) e git blame altera i tuoi file o la tua cronologia — si limitano a riportare lo stato. Questo li rende sicuri da eseguire in qualsiasi momento. Quando vuoi effettivamente modificare ciò che è registrato, utilizzi altri strumenti come git commit, git checkout, oppure git diff per visualizzare in anteprima le modifiche prima.