Использование нескольких GPG-ключей в Git
- Генерируем ключи:
$ gpg --generate-key
- Копируем ID ключей:
$ gpg --list-secret-keys --keyid-format=long
----------------------------
sec rsa3072/8B7B750DE1510076 2021-11-26 [SC] [expires: 2023-11-26]
95A44D440CA3AB56836A44BC8B7B750DE1510076
uid [ultimate] Semen Syrovatskiy <mail@syrovatskiy.tk>
ssb rsa3072/1B2A34DB58D65474 2021-11-26 [E] [expires: 2023-11-26]
В примере выше ID ключа будет равен 8B7B750DE1510076.
- Экспортируем ключи с нужными ID:
$ gpg --armor --export 8B7B750DE1510076
-----BEGIN PGP PUBLIC KEY BLOCK-----
....................................
-----END PGP PUBLIC KEY BLOCK-----
- Добавляем ключи в Git:
Копируем блок публичного ключа и добавляем его в Git (например, в Github надо перейти в Settings -> SSH and GPG keys). При необходимости после добавления ключа верифицируем email, который был указан при его генерации на шаге 1.
- Создаём конфиги и редактируем
.gitconfig:
# ~/.config/git/default
[user]
name = Semen Syrovatskiy
email = mail@syrovatskiy.tk
signinKey = 8B7B750DE1510076
# ~/.config/git/work
[user]
name = Semen Syrovatskiy
email = syrovatskiy@qapl.ru
signinKey = 9993D7308BBCB218
# ~/.gitconfig
[commit]
gpgSign = true
[include]
path = ~/.config/git/default
[includeIf "gitdir:~/Git/Work/**/.git"]
path = ~/.config/git/work
- Проверяем, что всё работает:
$ cd ~/Git/Personal/my-personal-project/
$ git config user.signinkey
8B7B750DE1510076
$ cd ~/Git/Work/my-work-project/
$ git config user.signinkey
9993D7308BBCB218
Теперь Git будет сам понимать, какой из GPG-ключей где нужно использовать.