Управлять 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
Другие вопросы по тегам