Несколько учетных записей GitHub на одном ноутбуке

Представьте себе следующую ситуацию:

  • У вас есть только один ноутбук
  • У вас есть личный аккаунт GitHub
  • Ваш работодатель также хранит код на GitHub.
  • Вам нужно коммитить свой личный код в личные репозитории, но также и рабочий код в репозитории работодателя.
  • Вы не можете сделать это из своего личного аккаунта, но не хотите создавать дополнительный (с корпоративной электронной почтой).

Что делать в такой ситуации? Есть способ, как настроить свой ноутбук так, чтобы он фиксировал рабочие репозитории с рабочими учетными данными, а личные — с личными.

Это решение основано на двух аспектах:

  • исправление конфигурации SSH
  • переписывание git URL

Главное преимущество этого подхода в том, что он не требует дополнительной работы. Вам не нужно будет менять удаленные URL или запоминать, как клонировать вещи по-другому. Об этом позаботится вторая часть (переписывание URL).

Прежде всего, давайте исправим нашу конфигурацию .ssh. Предположим, что у вас есть 2 ssh ключа, ваш личный (github_personal) и ваш рабочий (github_work). Как создать ssh-ключи, вы можете прочитать в документации GitHub.

~/.ssh/config

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github_personal

# Work GitHub
Host github-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/github_work

Host *
  AddKeysToAgent yes
Вход в полноэкранный режим Выход из полноэкранного режима

Оба этих конфига имеют одинакового пользователя и домен, но мы позаботимся об этом позже. Далее — глобальный конфиг git.

~/.gitconfig

Здесь нам нужно добавить имя и email по умолчанию (те, которые мы использовали при создании ssh для нашего личного аккаунта).

[user]
    name = My Name
    email = personal@personal.email

[includeIf "gitdir:~/path/work_dir/"]
    path = ~/path/work_dir/.gitconfig

[url "github-work:work-github-org-name/"]
    insteadOf = git@github.com:work-github-org-name/
Войти в полноэкранный режим Выйти из полноэкранного режима

Что здесь происходит? Во-первых, задаем имя и email по умолчанию. Во-вторых, указываем на использование локального файла .gitconfig для всех репозиториев, расположенных по маске ~/path/work_dir/. И последнее, замените github.com (учетная запись по умолчанию для Github) на профиль, который мы установили под github-work в .ssh/config.

Последняя часть — модификация локального .gitconfig для всех наших рабочих репозиториев:

~/path/work_dir/.gitconfig
Это легко — просто замените свой email на корпоративный.

[user]
    email = work@work.email
Вход в полноэкранный режим Выход из полноэкранного режима

Вот и все! Пока вы храните все рабочие репозитории в ~/path/work_dir/, а личные материалы в другом месте, git будет использовать правильный SSH ключ при выполнении pulls/clones/pushes на сервер, а также будет прикреплять правильный адрес электронной почты ко всем вашим коммитам.

Как проверить? Клонируйте репозиторий по SSH, перейдите в эту папку и выполните git config --get user.email.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *