(Questo si basa in gran parte su A Git Horror Story: integrità del deposito con impegni firmati: una lettura molto buona e più informazioni di quelle che potrei dare in una risposta.)
Esistono diversi modi in cui un repository git può essere compromesso (questo non è un difetto di sicurezza, solo un dato di fatto: non si dovrebbe evitare di usare git per questo). Ad esempio, qualcuno potrebbe aver spinto nel tuo repository dichiarando di essere te. O del resto , qualcuno avrebbe potuto spingere nel repository di qualcun altro dichiarando di essere te (qualcuno potrebbe spingere nel proprio repository affermando di essere anche te). Questa è solo una parte della vita in un DVCS.
Proprio come un esempio:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
Lì, ho cambiato la mia configurazione git per far finta di essere te. E ora posso impegnarmi e lasciare che quei commit si facciano strada nella build di produzione, e sembra che tu l'abbia fatto.
Con la firma dei commit (e dei tag), si può dimostrare che alcuni commit e tag provenivano da te (e le cose che non sono firmate non avrebbero dovuto entrare nella build di produzione). Questa è davvero la chiave di tutto - firmando si impegna che hai detto che è il tuo lavoro.
L'aspetto "il tuo lavoro" è particolarmente importante nel kernel di Linux (e quindi git) che viene occasionalmente colpito da azioni legali sul copyright. Con la firma dei commit si dice che si ha il diritto al software, che tiene traccia dell'origine. È possibile che tu non abbia accesso alla fonte che è stata rivendicata come copyright e la richiesta è infondata. È possibile che la società abbia dimenticato che stavi lavorando per loro qualche anno fa e sotto la loro direzione ha aggiunto materiale al kernel, o qualsiasi altra cosa.
C'è qualche dibattito sul fatto che ogni commit debba essere firmato. Dalla firma GPG per git commit? (nel '09), Linus scrisse:
Firmare ogni commit è totalmente stupido. Significa solo che lo automatizzi e fai che la firma valga meno. Inoltre non aggiunge alcun valore reale, poiché il modo in cui funziona la catena DAG git del SHA1, hai sempre e solo bisogno di una firma per rendere tutti gli commit raggiungibili da quello effettivamente coperti da quello. Quindi la firma di ogni commit è semplicemente mancante.
Molto di più sui pensieri sull'accesso a git può essere letto anche lì.
Detto questo, si è comunque fatto strada.
Sembra esserci il consenso della maggioranza sul fatto che la firma di commit non sia necessaria, ma la firma dei tag è molto buona. Quel post sul blog collegato in alto suggerisce che si dovrebbe comunque firmare tutto. Come ho detto, c'è qualche dibattito sul fatto che ogni impegno sia necessario o meno.
La chiave del dibattito "firma ogni commit" probabilmente ha a che fare con il flusso di lavoro che usi. La maggior parte delle persone fa un sacco di impegni nel loro repository locale, quindi spinge quel set. Dovrebbe essere sufficiente taggare la raccolta finale (supponendo, cioè, assicurarsi che tutte le modifiche siano corrette). Se lavori in un ambiente in cui si muovono molti commit singoli, la distinzione tra un tag e un commit diventa meno ... distinta - e i commit della firma possono diventare più utili.