Как подписать коммиты в Git, если в репозитории включено требование GPG-подписи

«Как подписать коммиты в Git, если в репозитории включено требование GPG-подписи» — вопрос из категории git, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Если в репозитории требуется GPG-подпись коммитов, необходимо настроить Git для использования вашего GPG-ключа и добавлять флаг -S при коммите.

1. Настройка GPG-ключа в Git

Сначала укажите Git, какой ключ использовать. Узнайте ID вашего ключа (gpg --list-secret-keys) и выполните команду:

# Замените <KEY_ID> на ваш идентификатор ключа
git config --global user.signingkey <KEY_ID>

2. Подпись нового коммита

Используйте флаг -S для создания подписанного коммита:

git commit -S -m "feat: Add new feature with GPG signature"

3. Автоматическая подпись всех коммитов

Чтобы не добавлять флаг -S каждый раз, можно включить автоматическую подпись:

# Включить подпись для всех коммитов глобально
git config --global commit.gpgsign true

4. Подпись уже созданных, но не отправленных коммитов

Если вы забыли подписать последний коммит, используйте --amend:

# Переподписать последний коммит без изменения сообщения
git commit --amend -S --no-edit

Для переподписи нескольких последних коммитов используйте интерактивный rebase:

# Переподписать последние 3 коммита
git rebase -i HEAD~3 --exec "git commit --amend -S --no-edit"

После изменения истории коммитов (rebase, amend) для отправки на сервер может потребоваться принудительный push. Используйте --force-with-lease как более безопасную альтернативу --force:

git push --force-with-lease