GitHub Desktop – подписываем коммиты (Verified)

Думаю многие видели на GitHub коммиты со значком Verified:

подписываем коммиты

В этой статье я расскажу как подписывать коммиты. Методы, описанные в статье подходят как для GitHub, так и для GitLab, а что касается клиентов, то коммиты будут подписываться и в GitHub Desktop и в TortoiseGit и в других графических приложениях. Сразу отмечу, что статья предназначена для пользователей Windows.

Если вы хотите максимально быстро настроить подпись коммитов – читайте первую часть статьи. А если вам интересны и другие детали, то можете прочитать остальное.

GitHub Desktop – подписываем коммиты (быстрая инструкция)

Подразумевается, что у вас уже установлен GitHub Desktop.

  • Скачиваем и устанавливаем GPG (выбираем Simple installer for the current GnuPG)
    • Сложностей в установке не возникнет
  • Скачиваем и устанавливаем Git for Windows
    • выбираете подходящие вам параметры
    • выбираете используемый вами редактор, например Notepad++
    • выбираете название ветки по умолчанию (как выбирали в Githib Desktop)
    • далее оставляем пункт помеченный как Recommended
    • далее можно все оставить по умолчанию или изменить на ваш вкус
    • по окончанию установки, рекомендую сразу поставить галочку Launch Git Bash

Далее мы будем работать в Git Bash. Если вы не поставили галочку для его запуска, то можете найти его в меню Пуск -> Все программы -> Git.

Для генерации ключей пишем:

gpg --full-generate-key

Далее:

  • Вводим 1
  • Вводим 4096
  • Вводим срок действия ключа в требуемом формате (там будет подсказка) или 0 для бессрочного ключа
  • Далее вас попросят ввести Real name и Email – их нужно вводить строго те же, которыми вы подписываетесь в коммитах
  • Далее вас попросят ввести пароль для ключа во всплывающем окне Pinentry – его вы потом будете вводить каждый раз, когда делаете коммит

Сразу скажу, я пробовал создать ключ без пароля. Тогда Pinentry выдает такое предупреждение:

подписываем коммиты - pinentry

И ключ в общем-то создается. Но проблема в том, что GitHub Desktop почему-то отказывается с ним работать и при попытке закоммитить изменения в любом репозитории он выдает ошибку. Работает только с ключами, имеющими пароль.

Продолжим:

  • Далее необходимо просто двигать указатель мыши по экрану (или набирать что-то на клавиатуре) для успешной генерации ключа
  • Все, ключ сгенерирован.

Визуально процесс выглядит вот так:

подписываем коммиты - генерация ключа

Далее включаем подпись коммитов в конфиге Git (все там же, в Git Bash):

git config --global user.signingkey KEY_EMAIL

Вместо KEY_EMAIL укажите email который вписали при создании ключа.

git config --global commit.gpgsign true
git config --global gpg.program $(which gpg)

Далее экспортируем ключ:

gpg --armor --export KEY_EMAIL
подписываем коммиты - настройка

Выделяем и копируем из Git Bash ваш ключ вместе с заголовками блоков, т.е. скопированный ключ должен начинаться с -----BEGIN PGP PUBLIC KEY BLOCK----- и заканчиваться -----END PGP PUBLIC KEY BLOCK-----

Осталось только добавить ключ на GitHub в этом разделе. Нажимаете New GPG key, вставляете ключ и придумываете ему название.

После этого можете делать коммиты в GitHub Desktop и у вас будет появляться такое всплывающее окно:

подписываем коммиты - подпись

Тут вы указываете пароль, который указали при создании ключа и все – подписанный коммит готов.

Дополнительная информация для тех, кому будет интересно.

Экспорт и импорт ключей

Если вам понадобится экспортировать ключ в файл, чтобы можно было в будущем импортировать его, например после переустановки Windows, то открываем Git Bash или обычную командную строку Windows и пишем:

gpg --armor --export KEY_EMAIL > git.asc
gpg --armor --export-secret-key KEY_EMAIL > git_secret.asc

Вместо KEY_EMAIL укажите email, который вписывали при создании ключа или же идентификатор ключа, который можно получить, открыв список ключей:

gpg -k

Файлы сохранятся в папке вашего пользователя, например C:\Users\Alexell

Чтобы импортировать ключ в gpg, понадобится следующая команда:

gpg --import git_secret.asc

Только здесь нужно указать полный путь к файлу с приватным ключом.

Графический интерфейс, подпись и шифрование файлов и писем

Если вам больше нравится графический интерфейс и вы хотите получить больше возможностей, то вместо простого GPG вы можете установить пакет Gpg4win.

подписываем коммиты - установка Gpg4win

В процессе установки вам нужно будет выбрать необходимые приложения:

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

менеджер ключей Kleopatra

GpgOL – дополнение, которое позволит вам подписывать письма в Microsoft Outlook, если вы конечно пользуетесь им. Будет добавлен такой пункт в меню:

подписываем письма в ms outlook

Если выбрать установку оболочки GpgEX, то в контекстное меню Windows будет добавлено меню, позволяющее подписывать и шифровать файлы.

gpgex для подписи и шифрования файлов

На этом я заканчиваю статью и желаю всем успехов с подписью коммитов или файлов.