Da Anonimo (non verificato) , 29 Aprile 2026

Perche firmare

Un commit firmato attesta crittograficamente "questo commit e stato scritto dal possessore di questa chiave, immutato dalla firma". Le firme difendono da impersonificazione e manomissione.

Setup una tantum

gpg --full-generate-key
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey 0xABCDEF1234567890
git config --global commit.gpgsign true
git config --global tag.gpgsign true
gpg --armor --export 0xABCDEF1234567890

Firma su richiesta

git commit -S -m "Important change"
git tag -s v1.0.0 -m "Release 1.0.0"
git log --show-signature
git verify-commit <sha>
git verify-tag v1.0.0

Agente GPG e pinentry

# ~/.gnupg/gpg-agent.conf
default-cache-ttl 28800
max-cache-ttl 86400
pinentry-program /usr/local/bin/pinentry-mac

Chiavi hardware

YubiKey o token simili possono contenere la chiave di firma GPG, richiedendo un tocco per commit.

Errori comuni

Impostare commit.gpgsign true senza un agente funzionante fa appendere ogni git commit su un pinentry bloccato.

Verificare un push remoto

git push --signed