(Ceci est largement basé sur une histoire d'horreur Git: Intégrité du référentiel avec des validations signées - une très bonne lecture et plus d'informations que je ne pourrais en donner pour répondre.)
Un référentiel git peut être compromis de différentes manières (il ne s'agit pas d'une faille de sécurité, mais d'une réalité, il ne faut pas éviter d'utiliser git pour cette raison). Par exemple, quelqu'un peut avoir poussé dans votre référentiel en prétendant être vous. Ou d'ailleurs, quelqu'un aurait pu pousser dans le référentiel de quelqu'un d' autre prétendant être vous (quelqu'un pourrait également accéder à son propre référentiel prétendant être vous). Cela fait partie de la vie dans un DVCS.
Juste à titre d'exemple:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
Là, j'ai changé ma configuration git pour prétendre que je suis toi. Et maintenant, je peux m'engager et laisser ces commissions s'intégrer d'une manière ou d'une autre dans la production, et il semblerait que vous l'ayez fait.
Avec la signature des commits (et des balises), vous pouvez prouver que certains commits et balises venaient de vous (et les éléments non signés n'auraient pas dû figurer dans la version de production). C'est vraiment la clé de tout. En signant des engagements, vous dites que c'est votre travail.
L'aspect "votre travail" est particulièrement important dans le noyau Linux (et donc git) qui est parfois frappé de poursuites pour atteinte aux droits d'auteur. En signant des commits, vous indiquez que vous avez le droit d'accéder au logiciel: il en suit l'origine. Il se peut que vous n’ayez pas accès à la source faisant l’objet du droit d’auteur et que cette revendication soit sans fondement. Il se peut que la société ait oublié que vous travailliez pour eux il y a quelques années et, sous leur direction, a ajouté de la matière au noyau, ou peu importe.
Il y a un débat quant à savoir si chaque commit doit être signé. De GPG signant pour git commit? (retour en '09), Linus a écrit:
Signer chaque commit est totalement stupide. Cela signifie simplement que vous l'automatisez et que vous donnez moins de valeur à la signature. Cela n'ajoute pas non plus de réelle valeur, puisque, de la même manière que la chaîne de travail git de SHA1, vous n'avez besoin que d'une signature pour que tous les commits accessibles de celle-ci soient effectivement couverts par celle-ci. Donc, signer chaque commit est tout simplement sans intérêt.
Vous pouvez lire beaucoup plus d'informations sur la connexion à git ici.
Cela dit, il a quand même fait son chemin.
Il semble y avoir un consensus majoritaire selon lequel la signature des commits n'est pas nécessaire, mais la signature des balises est très bonne. Cet article de blog lié en haut suggère qu'il faut tout signer de toute façon. Comme je l'ai dit, il y a un débat sur la question de savoir si chaque engagement est nécessaire ou non.
La clé du débat "signer chaque engagement" a probablement à voir avec le flux de travail que vous utilisez. La plupart des gens font une série de commits dans leur rapport local, puis poussent cet ensemble. Il devrait suffire de marquer la collection finale (en supposant que vous vous assurez que toutes les modifications sont correctes). Si vous travaillez dans un environnement où de nombreux commits simples se déplacent, la distinction entre une balise et un commet devient moins… distincte - et la signature des commits peut devenir plus utile.