Компьютеры · Инструкция
git merge --verify-signatures: как проверить подпись
git merge --verify-signatures: как проверить подпись — опция заставляет merge проверить криптографическую подпись tip-коммита присоединяемой ветки.
Короткий ответ
`git merge --verify-signatures <branch>` перед merge проверяет, что tip-коммит присоединяемой ветки имеет действительную подпись, соответствующую доверенному ключу по правилам Git. Постоянное поведение можно включить через `merge.verifySignatures=true`.
Что именно проверяется при merge
Опция `--verify-signatures` валидирует подпись tip-коммита ветки, которую вы собираетесь влить. Если подпись не проходит проверку по trust model Git/GPG, merge прерывается. Это важное ограничение: наличие одного подписанного tip не доказывает, что все предыдущие commits были подписаны. Для строгой цепочки нужна отдельная политика и, возможно, серверное требование подписанных commits.
Совет: Сначала протестируйте `git verify-commit` на известном подписанном commit.
Как включить проверку
- Убедитесь, что локальная система подписи настроена и Git умеет проверять ключи нужных участников.
- Сначала вручную выполните `git verify-commit <sha>` для примера ожидаемой подписи и доверия.
- Попробуйте `git merge --verify-signatures feature`, чтобы увидеть поведение до изменения глобальной конфигурации.
- Если правило подходит workflow, задайте `git config merge.verifySignatures true` локально или на нужном уровне.
- Проверьте сценарий с неподписанным тестовым tip, чтобы команда понимала ожидаемое сообщение об отказе.
Почему доверие ключу так же важно, как наличие подписи
Криптографически корректная подпись и доверенный автор — не всегда одно и то же. Git использует доступную систему проверки и её trust model, поэтому на новой машине тот же commit может не пройти без нужного публичного ключа или настроенного доверия. В CI желательно заранее управлять keyring/SSH signing configuration предсказуемо. Если проект использует GitHub verified commits, локальная GPG/SSH-проверка и серверная метка — связанные, но не идентичные механизмы.
Предупреждение: Не воспринимайте подписанный tip как доказательство подписи каждого commit в ветке.
Перед обязательным rollout
- определить поддерживаемый тип подписи;
- распространить публичные ключи/доверие;
- проверить CI и локальные машины;
- документировать процедуру при ротации ключа.
Что именно проверяется
Проверка относится к подписи tip-коммита присоединяемой ветки, а не автоматически ко всем коммитам её истории. Если политика требует подтверждения каждой подписи, это нужно обеспечивать отдельными правилами и проверками, а `--verify-signatures` рассматривать как один контроль на этапе merge.
Где проверка подписи особенно уместна
`--verify-signatures` полезен как дополнительный барьер перед слиянием ветки, если команда договорилась принимать только подписанные tip-коммиты от доверенных ключей. Но доверие к ключу и политика проекта остаются отдельными задачами. Проверяйте, какой ключ считается допустимым, и не трактуйте успешную проверку одного tip-коммита как криптографическую аттестацию всей истории ветки.
Пример безопасного merge на release-ветку
Перед вливанием `release-candidate` вы выполняете merge с `--verify-signatures`. Если tip подписан доверенным release-ключом, Git продолжает обычную merge-процедуру. Если подписи нет или проверка не проходит, история не меняется от этой команды, и вы сначала выясняете происхождение commit вместо отключения проверки ради скорости.
Важно: Не отключайте проверку в CI «на один раз» без понятного процесса исключений и аудита.
Что учитывать
Криптографически корректная подпись и доверенный автор — не всегда одно и то же. Git использует доступную систему проверки и её trust model, поэтому на новой машине тот же commit может не пройти без нужного публичного ключа или настроенного доверия. В CI желательно заранее управлять keyring/SSH signing configuration предсказуемо. Если проект использует GitHub verified commits, локальная GPG/SSH-проверка и серверная метка — связанные, но не идентичные механизмы.
Источники и проверка
Инструкция составлена редакцией N1RO на 2026-09-23. Перед действием сверьте актуальные условия на официальном сайте сервиса или производителя.