A concludere l’elenco dei comandi utili in Git per interrogare lo stato e la storia di un repository troviamo il comando git blame
La traduzione letterale del verbo “to blame” è “incolpare” e infatti questo comando git viene usato per rispondere alla domanda “chi ha cambiato questa riga???”. È ovviamente utile nel caso di più persone che concorrono allo sviluppo di una codebase.
Vediamone subito un esempio:
$ git blame gradle.properties 2a0629fa2 (John Doe 2021-03-04 19:55:36 +0100 1) kotlin.code.style=official f9fba3a0e (Jane Foo 2021-05-27 14:13:45 +0200 2) ## for local development, set GRADLE_OPTS in pipeline to change f9fba3a0e (Jane Foo 2021-05-27 14:13:45 +0200 3) org.gradle.caching=true f9fba3a0e (Jane Foo 2021-05-27 14:13:45 +0200 4) org.gradle.daemon=true 8692fb277 (John Doe 2022-03-08 09:15:06 +0100 5) 77e32fc3b (Jane Doe 2022-11-07 18:45:22 +0100 6) ktor_version=2.1.3
Innanzitutto, il comando git blame richiede che venga passato al comando il nome di un file. Di tale file vengono stampate tutte righe, ognuna con indicato
- l’id del commit che ha modificato quella riga,
- il rispettivo autore del commit
- la data del commit
- il numero della riga
- il contenuto della riga
È possibile indicare alcune opzioni aggiuntive per evidenziare alcuni tipi di modifica (-w per ignorare gli spazi, -M per ignorare le righe spostate all’interno del file e -C per rilevare righe spostate o copiate da altri file).
In generale, comunque, va ricordato che:
- git blame e git log possono essere usati per trovare l’autore di una determinata modifica, la scelta dell’uno o dell’altro dipende da cosa si sta cercando
git blame mostra solo chi ha “toccato” per ultimo una certa riga di un file, non dice cosa ha cambiato (per cui la persona che git blame incolpa potrebbe non essere quella che ha introdotto un bug)