(Это в значительной степени основано на «Истории ужасов Git: целостность репозитория с подписанными коммитами» - очень хорошее чтение и больше информации, чем я мог бы вставить в ответ.)
Существует несколько способов, с помощью которых репозиторий git может быть скомпрометирован (это не недостаток безопасности, а просто факт жизни - из-за этого не следует избегать использования git). Например, кто-то, возможно, подтолкнул к вашему хранилищу, утверждая, что вы. Или, если на то пошло, кто-то мог подтолкнуть к чьему- либо хранилищу, утверждая, что вы - вы (кто-то мог подтолкнуть к своему собственному хранилищу, утверждая, что вы тоже). Это просто часть жизни в DVCS.
Просто в качестве примера:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
Там я изменил свою конфигурацию git, притворившись, что я - ты. И теперь я могу сделать коммит и позволить этим коммитам каким-то образом попасть в производственную сборку, и похоже, что вы это сделали.
Подписав коммиты (и теги), можно доказать, что определенные коммиты и теги были от вас (а вещи, которые не подписаны, не должны были попасть в рабочую сборку). Это действительно ключ ко всему - подписывая коммиты, вы говорите, что это ваша работа.
Аспект «твоя работа» особенно важен в ядре linux (и, следовательно, в git), в который иногда попадают иски об авторских правах. Подписывая коммиты, вы говорите, что имеете право на программное обеспечение - оно отслеживает происхождение. Может случиться так, что у вас нет доступа к источнику, который заявлен как авторское право, и заявка является необоснованной. Возможно, компания забыла, что вы работали на них несколько лет назад и под их руководством добавили материал в ядро или что-то в этом роде.
Есть некоторые дебаты относительно того, должен ли каждый коммит быть подписан. От подписи GPG для git commit? (в далеком 09 году) Линус писал:
Подписывать каждый коммит абсолютно глупо. Это просто означает, что вы автоматизируете это, и вы делаете подпись на сумму меньше. Это также не добавляет никакой реальной ценности, поскольку, как работает цепочка мерзких DAG в SHA1, вам когда-либо понадобится только одна подпись, чтобы все коммиты, достижимые из этого, были эффективно охвачены этим. Так что подписание каждого коммита просто упускает смысл.
Более подробную информацию о том, как войти в git, можно прочитать там же.
Тем не менее, он в любом случае превратился в мерзавца.
Похоже, что большинство согласны с тем, что подписывать коммиты не нужно, но подписывать теги очень хорошо. Этот пост в блоге, связанный сверху, предполагает, что в любом случае нужно все подписывать. Как я уже сказал, есть некоторые споры о том, необходим ли каждый коммит или нет.
Ключ к дискуссии «подписать каждый коммит», вероятно, связан с используемым вами рабочим процессом. Большинство людей совершают кучу коммитов в своем локальном репо, а затем выдвигают этот набор. Этого должно быть достаточно, чтобы пометить окончательную коллекцию (при условии, что вы убедитесь, что все изменения верны). Если вы работаете в среде, в которой перемещается множество отдельных коммитов, различие между тегом и коммитом становится менее… четким, и подписывание коммитов может стать более полезным.