Sinossi
git blame [-L <range>] [-w] [-M] [-C] <file>
Descrizione
Il comando git blame annota ogni riga di un file con il commit, autore e timestamp che l'ha toccata per ultimo. È prezioso per capire perché un pezzo di codice ha quell'aspetto, chi l'ha introdotto e quando. Nonostante il nome accusatorio, blame è usato per lo più come strumento di ricerca, non come mezzo di puntare il dito.
Blame può seguire il codice mentre veniva spostato o copiato (con -M e -C), e può ignorare commit di solo whitespace o solo formattazione se mantieni un file .git-blame-ignore-revs referenziato via blame.ignoreRevsFile.
Nell'uso quotidiano, git blame si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-L <start>,<end> | Limita blame a un intervallo di righe. |
-w | Ignora modifiche di whitespace. |
-M | Rileva righe spostate all'interno di un file. |
-C | Rileva righe copiate da altri file (ripeti per rilevamento più forte). |
--since=<date> | Smette di annotare prima di questa data. |
-e, --show-email | Mostra l'email dell'autore invece del nome. |
--ignore-revs-file <file> | Salta le revisioni elencate quando assegna blame. |
Esempi
git blame src/parser.c
# Annota ogni riga
git blame -L 50,100 src/parser.c
# Solo righe da 50 a 100
git blame -w -M -C README.md
# Ignora whitespace e rileva spostamenti/copie
git blame --ignore-revs-file .git-blame-ignore-revs file.js
# Salta commit di formattazione rumorosi
Errori comuni
Usare blame per assegnare colpa piuttosto che per investigare il contesto crea una cultura ostile. Abbina blame a git log sul commit incriminato per leggere il messaggio completo e l'intento. Dopo formattazione di massa, configura .git-blame-ignore-revs così che blame punti ancora ad autori significativi.
Comandi correlati
git log -L, git log -S, git show, git annotate