Ответ
Если в репозитории требуется 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 Ответ 18+ 🔞
Да ты посмотри, какая хуйня! В репозитории требуют, чтобы коммиты были подписаны GPG-ключом. Ну, типа, для доверия, чтоб никто не подсунул левый код от твоего имени. Вообще, в принципе, логично, но возни, блядь, овердохуища.
1. Настройка GPG-ключа в Git
Первым делом, надо Git'у впарить твой ключ. Сначала узнай, какой у тебя ключ главный. Тыкай в консоль:
gpg --list-secret-keys
Там высунется какая-то хуйня вроде rsa4096/1A2B3C4D5E6F7890. Вот этот код после слеша — твой <KEY_ID>. Его и впихивай:
# Вместо <KEY_ID> — тот самый код, который только что увидел
git config --global user.signingkey <KEY_ID>
2. Подпись нового коммита
Теперь, когда делаешь коммит, надо добавить волшебную букву -S. Без неё — пизда, коммит будет обычным, и тебя наверняка заебут.
git commit -S -m "feat: Add new feature with GPG signature"
3. Автоматическая подпись всех коммитов
А если ты, как я, постоянно забываешь эту чёртову букву, можно настроить так, чтобы всё подписывалось само. Один раз настроил — и похуй.
# Включить подпись для всех коммитов навсегда
git config --global commit.gpgsign true
4. Подпись уже созданных, но не отправленных коммитов
А вот это, сука, самый интересный момент! Допустим, накодил ты три коммита, уже всё готово к пушечку, а тут вспоминаешь — блядь, подпись же забыл! И что, всё заново? Не, есть способ.
Чтобы переподписать самый последний коммит:
# Переподписываем последний коммит, не трогая сообщение
git commit --amend -S --no-edit
А если надо переподписать не один, а несколько последних коммитов? Тут уже веселее, интерактивный rebase в помощь:
# Переподпишем последние 3 коммита
git rebase -i HEAD~3 --exec "git commit --amend -S --no-edit"
Только смотри, после таких манипуляций история меняется. Значит, простой git push уже не прокатит. Придётся пушить с силой. Но не с дикой, а с умной — --force-with-lease. Это как --force, но он тебя предупредит, если кто-то другой уже что-то залил в ту же ветку, пока ты тут со своей историей хуё-маё занимался.
git push --force-with-lease
Вот и вся магия. Вроде и не сложно, но пока настроишь — волнение ебать, терпения ноль ебать. Зато потом — красота, все коммиты с зелёной галочкой «Verified», и ты чувствуешь себя настоящим цифровым дворянином, блядь.