Управлять 2 git пользователями ключом gpg и выбирать знак gpg для каждого пользователя
У меня есть 1 пользователь github и другой пользователь gitlab, и я создал 1 ключ gpg для каждого, потому что мой адрес электронной почты отличается.
Проблема в том, что я должен выполнить git config --global user.signingkey
каждый раз, когда я хочу совершить разные репозитории git.
Есть ли способ управления ключами gpg для каждого пользователя git?
4 ответа
У меня такая же ситуация, но с разделением рабочего / личного кабинета. И у меня много репозиториев, но я не хочу запускатьgit config
каждый раз клонирую что-то новое.
Я написал об этом в блоге. Способ сделать это автоматически - использоватьincludeIf
директива, предоставленная git. Вы можете узнать больше об этом в разделе " Условное включение " в руководстве по git.
Есть небольшое требование, так как вам нужно иметь возможность отличать репозитории github от репозиториев gitlab с помощью компонента на вашем пути (например, поместить клоны github в~/github
и клоны gitlab в ~/gitlab
)
Затем, по сути, разделите конфигурацию ключа подписи на два файла:
# config.github
[user]
name = Chakrit
email = github@example.com
signingkey = DEADBEEF
# config.gitlab
[user]
name = Chakrit
email = gitlab@example.com
signingkey = BADC0FFEE
А затем в вашем основном ~/.config/git/config
файл конфигурации, используйте includeIf gitdir:
директива для сопоставления и включения разных файлов в зависимости от вашего WD:
# when working with github
[includeIf "gitdir:**/github/**/.git"]
path = config.github
# when working with gitlab
[includeIf "gitdir:**/gitlab/**/.git"]
path = config.gitlab
Тогда все репо в вашем ~/github
папка будет автоматически использовать ваш ключ github и репозитории в вашем ~/gitlab
папка будет использовать ваши ключи gitlab.
Просто удали все
user.signingkey
настройки из вашего репо и ваши глобальные настройки.
git
решит использовать ключ в
gpg
с совпадающим идентификатором для
user.email
настройка из вашего репо.
Ключ подписи может быть установлен для каждого репозитория, просто выполните: git config user.signingkey
из проверенного хранилища. Эта команда устанавливает конфигурацию в репозитории .git/config
, --global
параметры приводят к записи конфигурации в ~/.gitconfig
где он становится значением по умолчанию для репозиториев, для которых не установлено локальное значение.
Более подробную информацию можно найти в git-config
Страница man в разделе user.signingKey.
Вы также можете получить лучшие результаты, также установив user.email
на электронную почту, связанную с хранилищем.
Я бы улучшил ответ @chakrit, но очередь редактирования уже давно заполнена...
Я предпочитаю независимый от файловой системы подход и загружаю правильную конфигурацию на основе URL-адреса удаленного хоста Git:
[includeIf "hasconfig:remote.*.url:**/github.com*/**"]
path = config.github