У меня есть учетные записи у трех разных поставщиков услуг Git — GitHub, GitLab и BitBucket. Я хочу убедиться, что мои коммиты подписаны через SSH во всех упомянутых провайдерах, что невозможно, поскольку на данный момент я назначил адрес электронной почты GitLab, а все мои учетные записи используют уникальные адреса электронной почты. Это только успешно проверяет подписанные коммиты для GitLab. Как мне сделать так, чтобы репозитории GitHub/BitBucket были назначены их соответствующему адресу электронной почты?
В сети ничего не нашел по этому поводу. Есть метод "gitdir", но я его не ищу. Я ожидаю, что Git поймет, какой хост я использую (если на GitHub, используйте [email protected], если на GitLab, используйте [email protected] и т. д.), и на основе этого назначит электронные письма.
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]