{{tag>git dev signature sécurité gpg gpg2}}
====== Git : Signer ses travaux ======
Confère le wiki [[dev:git:configuration#definir_la_cle_gpg_pour_signature_du_travail | configuration de git]] pour la mise en place du paramétrage nécessaire à la signature. Pour signer les travaux **git** utilise **gpg** ou **gpg2**.
Pour activer la signature systématique des commits, ici l'option de portée **%%--global%%** permet de le définir pour tous les dépôts de l’utilisateur courant:
git config --global commit.gpgsign true
===== Signer un commit =====
Si le client git n'est pas configuré pour signer systématiquement les commits, on peut signaler ponctuellement quel commit signer via l'argument **-S**:
git commit -S -m "Modifications apportées"
===== Signer un tag =====
Les tags peuvent également être signés, pour cela utiliser l'argument **-s**
git tag alpha-0.3 -s -m 'version alpha 0.3'
Pour vérifier un tag signé utiliser l'argument -v:
git tag -v alpha-0.3
===== Afficher les informations de signature =====
Par défaut les informations de signature ne sont pas systématiquement affichées.
==== Sur le log ====
Il est possible via la commande **git log** d'ajouter l' option **%%--show-signature%%** affichant les informations de signature:
git log --show-signature
==== Sur un commit ====
La commande **git show** permet d'afficher le commit et les informations de signature via l'option **%%--show-signature%%**:
# En utilisant un tag
git show master --show-signature
# En utilisant le SHA de l' objet
git show 7554255 --show-signature
===== Vérifier du code signé =====
==== Vérifier un tag ====
Pour vérifier un tag signé, utiliser l'option **-v**. La vérification s'appuie sur GPG, le trousseau de l'utilisateur doit contenir la clé publique du signataire pour que l' opération puisse aboutir.
git tag -v alpha-1.1
==== Vérification avant fusion =====
A partir de la version 1.8.3 les commandes **git merge** et **git pull** peuvent vérifier et rejeter des commits sans signature appartenant à son réseau de confiance en utilisant l'option **%%--verify-signatures%%**.
git merge --verify-signatures non-verify-branch
Le merge est une forme de commit, on peut donc le signer via l'option **-S**:
git merge --verify-signatures -S signed-branch
===== Références =====
* https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work