Как переключить электронную почту git на основе хоста?

У меня есть учетные записи у трех разных поставщиков услуг Git — GitHub, GitLab и BitBucket. Я хочу убедиться, что мои коммиты подписаны через SSH во всех упомянутых провайдерах, что невозможно, поскольку на данный момент я назначил адрес электронной почты GitLab, а все мои учетные записи используют уникальные адреса электронной почты. Это только успешно проверяет подписанные коммиты для GitLab. Как мне сделать так, чтобы репозитории GitHub/BitBucket были назначены их соответствующему адресу электронной почты?

В сети ничего не нашел по этому поводу. Есть метод "gitdir", но я его не ищу. Я ожидаю, что Git поймет, какой хост я использую (если на GitHub, используйте [email protected], если на GitLab, используйте [email protected] и т. д.), и на основе этого назначит электронные письма.


4
78
2

Ответы:

Git позволяет вам установить адрес электронной почты по умолчанию для новых коммитов в клоне локального репозитория с помощью следующей команды:

$ git config --local user.email "[email protected]"

Так что, пока любой ваш локальный репозиторий отправляет данные только на конкретный хостинг, вы должны иметь возможность назначить соответствующий адрес электронной почты для коммитов.

Это отвечает на ваш вопрос?


Решено

К сожалению, Git config не поддерживает условные операторы напрямую, но включает в себя другие файлы конфигурации. Я смог решить свою проблему, используя условие hasconfig:remote.*.url для includeIf. Вы можете удалить переменную электронной почты под блоком [user] — это ваша глобальная электронная почта. Создайте три новых блока для одного и того же. Вот пример того, как выглядит мой файл .gitconfig:

.gitconfig

[user]
  name = <Your name>
  signingkey = ~/.ssh/id_ed25519.pub

[includeIf  "hasconfig:remote.*.url:[email protected]:**/**"]
  path = .github

[includeIf  "hasconfig:remote.*.url:[email protected]:**/**"]
  path = .gitlab

[includeIf  "hasconfig:remote.*.url:[email protected]:**/**"]
  path = .bitbucket

[init]
  defaultBranch = main

[core]
  editor = vim 

[color]
  ui = auto

[gpg]
  format = ssh 

[commit]
  gpgsign = true

Теперь создайте файлы конфигурации для соответствующих пультов. Я создал .github, .gitlab и .bitbucket в том же каталоге, что и .gitconfig:

.github

[user]
  email = [email protected]

.gitlab

[user]
  email = [email protected]

.битбакет

[user]
  email = [email protected]