Содержание
Зачем оно надо
Мало кто задумывается о том, что Gitlab, Github, Gitea, Bitbucket и другие хабы для хранения исходников при отображении авторов коммитов опираются на два простых поля, которые Вы указывали, когда первый раз что-то пушили с новой тачки.
git config --global user.name "<Ваше имя>"git config --global user.email "<Ваш email>"
И это нормально, ведь оно просто работает. При этом мало что мешает какому-то нехорошему человеку прикинуться Вами (ведь что имя, что email публичны и видны под каждым коммитом) или же кому-то пафосно заявить, что сам, ну скажем, Линус Торвальдс принимало участие в разработке форка is-odd
для Rust-а.
Да и в целом хорошей практикой считается подписывать коммиты, ведь если Вы принимали участие в разработке какого-то большого Open Source-ного проекта, то наверняка сталкивались с этим.
Подписывание коммитов
В целом для любого хаба флоу примерно следующий:
- Сгенерировать ключ (SSH, GPG или еще какой поддерживаемый)
-
Привязать его к Вашему аккаунту
-
Настроить локальный git клиент для работы с конкретным ключом
-
(Опционально) Настроить git, чтобы коммиты подписывались автоматически
Пробежимся вкратце по каждому из пунктов.
Генерация ключа
GPG
Ставим gpg
и в терминале делаем:
gpg --full-generate-key
Далее в интерактивном режиме:
-
Выбираем тип ключа или же Enter, чтобы выбрать дефолтный
-
Указываем размер ключа или же Enter, для дефолтного
-
Указываем время жизни ключа или просто Enter, чтобы ключ не протухал
-
Вводим информацию о нас
- Вводим секретную фразу для ключа или Enter, чтобы подпись работала без него
Готово! Ключ создан, теперь через gpg
можно проверить, что он создан:
$ gpg --list-secret-keys --keyid-format=long/home/anon/.gnupg/secring.gpg------------------------------------sec 4096R/3AA5C34371567BD2 2025-03-10 [expires: never]uid Anon <anon@example.com>ssb 4096R/4BB6D45482678BE3 2025-03-10
В данном примере нас интересует значение 3AA5C34371567BD2
. Получим для этого ключа его публичную часть:
gpg --armor --export 3AA5C34371567BD2# Prints the GPG key ID, in ASCII armor format
Можно копировать публичную часть ключа.
Привязка к аккаунту
Github
-
На любой странице Github кликаем на фото профиля и выбираем значок с настройками
Settings
. -
В разделе
Access
находимGPG and SSH keys
, переходим -
Пролистываем до раздела
GPG keys
и жмемNew GPG key
-
Даем ему имя, к примеру, имя устройства, к которому привязан этот ключ, копируем ключ из последнего шага и вставляем в поле. Жмем
Add GPG key
-
Все готово к работе! Ключ виден в списке и привязан к аккаунту.
Gitlab
TODO
Настройка git
Делаем после того, как сгенерировали ключ в пункте выше. Получаем список существующих ключей:
$ gpg --list-secret-keys --keyid-format=long/home/anon/.gnupg/secring.gpg------------------------------------sec 4096R/3AA5C34371567BD2 2025-03-10 [expires: never]uid Anon <anon@example.com>ssb 4096R/4BB6D45482678BE3 2025-03-10
В данном примере будем использовать значение 3AA5C34371567BD2
.
Указываем для конкретной репы этот ключ:
git config user.signingkey 3AA5C34371567BD2
или то же самое для всех репозиториев по умолчанию:
git config --global user.signingkey 3AA5C34371567BD2
Опционально Настраиваем git, чтобы все коммиты и теги подписывались нашей подписью:
# Коммитыgit config --global commit.gpgsign true
# Тэгиgit config --global tag.gpgSign true
Заключение
В целом штука крайне необязательная, если Вы разрабатываете в одиночку, но сильно важная для крупных Open-source проектов. Я бы сказал, что можно настроить просто для общего развития.