(Багато в чому ґрунтується на Git Horror Story: Integrity with the Signed Commits - дуже добре прочитане та більше інформації, ніж я міг би дати у відповідь.)
Існує кілька способів компрометації сховища git (це не вада безпеки, а лише життєвий факт - не слід уникати використання git через це). Наприклад, хтось, можливо, перейшов до вашого сховища, претендуючи на вас. Або з цього приводу хтось міг би перейти до чужого сховища, претендуючи на те, що ти - ти (хтось може перейти до власного сховища, який вимагає бути тобою також). Це лише частина життя в DVCS.
Як приклад:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
Там я змінив свою конфігурацію git, щоб зробити вигляд, що я ти. І тепер я можу взяти на себе зобов’язання і дозволити цим зобов’язанням якось пробитися у виробництво, і, схоже, ви це зробили.
Підписавши коміти (та теги), можна довести, що певні коміти та теги були від вас (а речі, які не підписані, не повинні були вносити їх у виробничу збірку). Це дійсно ключ до всього - підписуючи зобов’язання, ви сказали, що це ваша робота.
Аспект "ваша робота" особливо важливий у ядрі linux (і, таким чином, git), який періодично потрапляє під судові позови щодо авторських прав. Підписуючи зобов’язання, ви говорите, що маєте право на програмне забезпечення - воно відстежує походження. Можливо, у вас немає доступу до джерела, на яке заявлено авторське право, і претензія є безпідставною. Можливо, компанія забула, що ви працювали над ними кілька років тому і під їх керівництвом додавали матеріал до ядра чи ще чого.
Існує певна дискусія щодо того, чи слід підписувати кожен комітет. Від підпису GPG для git-комітету? (ще у 09 році) Лінус писав:
Підписання кожного зобов’язання абсолютно нерозумно. Це просто означає, що ви автоматизуєте це, і ви робите підпис меншим. Це також не додає ніякої реальної цінності, оскільки для того, як робота GIT-ланцюга DAG роботи SHA1, вам завжди потрібна лише одна підпис, щоб зробити всі комісії доступними з того, щоб бути ефективно покритим цим. Тому підписання кожного зобов’язання просто не вистачає сенсу.
Ще багато про думки щодо входу в git можна прочитати там.
Однак це все одно пробилося в git.
Здається, існує думка більшості про те, що підписання зобов’язань непотрібне, але підписання тегів дуже добре. Цей блог, пов’язаний вгорі, говорить про те, що слід все одно підписувати. Як я вже говорив, є дебати щодо того, чи потрібно робити будь-яке зобов'язання чи ні.
Ключ до дискусії "підпишіть кожне зобов'язання", ймовірно, має стосунок робочого процесу, який ви використовуєте. Більшість людей роблять купу комісій у своєму місцевому репо, а потім натискають набір. Потрібно вистачити тегів на остаточну колекцію (припускаючи, тобто ви переконайтесь, що всі зміни правильні). Якщо ви працюєте в середовищі, де рухається безліч одиничних комітетів, відмінність між тегом і коміткою стає менш… чіткою - і підписання комітетів може стати більш корисним.