Использование Github и Gitlab

Моя проблема

Я хотел делать коммиты на Github со своим личным адресом электронной почты [email protected] и делать коммиты в Gitlab нашей компании с корпоративным адресом электронной почты [email protected], не меняя конфигурацию Git при каждом коммите. Поэтому, когда я делаю коммиты на Github, это связано с моей учетной записью Github, и то же самое для Gitlab.

Что я уже сделал

Поэтому я создал два разных SSH-ключа и связал их с Github и Gitlab. У меня также есть файл с именем config в моей папке ~/.ssh/ с этим:

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/github
    IdentitiesOnly yes
    User KonstantinSchuette

Host gitlab.company.com
        HostName gitlab.company.com
        IdentityFile ~/.ssh/gitlab
        IdentitiesOnly yes
        User KonstantinSchuette

Но мои коммиты не связаны с учетной записью, к которой я привязал ключи.


person dewey    schedule 20.11.2019    source источник
comment
Тест с ssh -T git@github-work   -  person phd    schedule 20.11.2019
comment
@phd теперь я заставил его работать, но столкнулся с другой проблемой, как описано выше   -  person dewey    schedule 20.11.2019
comment
Ключи SSH не имеют адресов электронной почты; может ты имеешь в виду комментарий? Нет, git не может использовать комментарий из ключа ssh. Также вы должны понимать, что электронная почта, используемая в коммитах, используется во время коммитов, а ключи ssh используются во время отправки. Два разных и не связанных между собой этапа. Таким образом, git может использовать только конфигурацию (или env var) для получения электронной почты, а не ключ ssh.   -  person phd    schedule 20.11.2019
comment
А ладно спасибо! Я думал, что ключи SSH используются для совершения коммитов с разными учетными записями на Github и Gitlab, поэтому он переопределяет конфигурацию. Но это не так. Мне нужно адаптировать конфигурацию   -  person dewey    schedule 21.11.2019


Ответы (1)


Что я неправильно понял

Я думал, что ключи SSH используются для совершения коммитов с разными учетными записями на Github и Gitlab, поэтому он переопределяет конфигурацию. Но это не так. Они используются только для получения доступа из разных учетных записей к разным платформам без ввода учетных данных учетной записи.

Решение

Мне нужно было создать разные папки для Github и Gitlab, чтобы загрузить другую конфигурацию для Git, когда я одновременно работаю над проектами Github и Gitlab. Таким образом, в папке Github находятся только репозитории из Github, а в папке Gitlab — только репозитории Gitlab.

Я отредактировал свой ~/.gitconfig следующим образом:

[includeIf "gitdir/i:~/Desktop/Github/"]
  path=.gitconfig-Github
[includeIf "gitdir/i:~/Desktop/Gitlab/"]
  path=.gitconfig-Gitlab

И в том же каталоге, что и .gitconfig, я создал .gitconfig-Github:

[user]
name=Dewey
[email protected]

а также .gitconfig-Gitlab:

[user]
name=Dewey
[email protected]

Я использую VSCode, поэтому было важно, чтобы includeIf начиналось с gitdir/i:, чтобы отключить регистрозависимость. Если вы не выполните этот шаг, ваша конфигурация не будет загружена при использовании VSCode.

Я нашел решение этой проблемы на доске вопросов для VSCode: https://github.com/Microsoft/vscode/issues/62921

Теперь все работает так, как я хотел.

person dewey    schedule 21.11.2019