In questo tutorial è basato sulla guida ufficiale di GitHub che spiega sia come il meccanismo di firma dei commit e dei tag funziona su GitHub ed è pertanto da tenere come riferimento per un eventuale approfondimento dell’argomento.
Creazione di una GPG key
Il primo passo, a meno che non si abbia già una GPG key e che si voglia utilizzare questa per firmare i propri commit su GitHub, è quello di crearne una. Il comando da lanciare è il seguente.
gpg --full-generate-key
Seguire la procedura guidata selezionando le specifiche opzioni o semplicemente premendo invio per accettare l’opzione di default. Verranno richieste le seguenti:
- Tipologia della GPG key (default RSA)
- Lunghezza della GPG key (default 3072)
- Scadenza della GPG key (default nessuna scadenza)
Dopo questi primi tre punti, verrà richiesto di inserire:
- Il proprio nome
- La propria email
Per quanto riguarda il nome c’è poco da dire, mentre per quanto riguarda la propria email, è necessario inserire l’email registrata e verificata su GitHub.
Terminato l’inserimento di questi dati verrà richiesto di inserire una passphrase. Sceglierne una sufficientemente complessa e premere quindi invio per completare la procedura di creazione della GPG key.
Visualizzazione dei dettagli della GPG key generata
Per visualizzare i dettagli della GPG key appena generata lanciamo il seguente comando:
gpg --list-secret-keys --keyid-format=long
L’output che otterremo sarà simile al seguente:
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot
ssb 4096R/4BB6D45482678BE3 2016-03-10
Copiamo quindi il GPG key ID, che in questo esempio è 3AA5C34371567BD2
e lanciamo il seguente comando:
gpg --armor --export 3AA5C34371567BD2
-----BEGIN PGP PUBLIC KEY BLOCK-----
e -----END PGP PUBLIC KEY BLOCK-----
e incolliamolo in Settings -> SSH and GPG keys del nostro GitHub account. 
Configurare git per firmare automaticamente tutti i commit e tag
Se si vuole che tutti i propri commit e i tag creati vengano automaticamente firmati, l’ultima cosa da fare è configurare git. Il comando da lanciare è il seguente:
git config --global user.signingkey 3AA5C34371567BD2
3AA5C34371567BD2
che corrisponde al GPG key ID del nostro esempio, deve essere opportunamente cambiato con il proprio. Infine laciamo questi ultimi due comandi per istruire git di firmare automaticamente tutti i nostri commit e tag:
git config --global commit.gpgsign true
git config --global tag.gpgSign true