Настройка нескольких аккаунтов GitHub на одном устройстве

Данная статья-гайд является логическим завершением статьи о настройке Git на CentOS 7, так как охватывает более частный случай, а именно ситуацию, в которой необходимо связать локальные репозитории и несколько аккаунтов на GitHub. Например, это может быть личный аккаунт и рабочий, репозитории которых, как у автора данной заметки, не пересекаются.

Несколько аккаунтов Github на одном компьютере

Данная статья является компиляцией из нескольких пользовательских и официального мануалов ввиду того, что, они показались автору несколько путанными и, при первом приближении, возникли трудности с настройкой мультиаккаунтов. Как следствие, процесс настройки разбит на небольшие шаги и написан как можно более простым языком.

Итак, для того, чтобы настроить несколько аккаунтов гитхаб на одном компьютере (или ином устройстве) потребуется выполнить несколько простых шагов:

Шаг 1. Генерация SSH-ключей

В терминале (или консольном приложении GIT) выполните команду

ssh-keygen

С её помощью вы должны создать 2 ключа: первый для корпоративного аккаунта, второй для личного. Например, их можно назвать github_personal и github_company.

В Windows 10 ключи будут сохранены по адресу ~/.ssh/

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

Шаг 2. Настройка файла config в папке .ssh

Скорее всего, вам потребуется создать файл с названием config (без всяких расширений) в папке ~/.ssh/

После того, как файл создан, туда нужно внести следующие изменения:

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


Host github-company.com
Hostname github.com
User git
IdentityFile ~/.ssh/github_company

Первый блок для личного аккаунта, а второй — для корпоративного.

Шаг 3. Настройка родительского файла .gitconfig

Сперва нужно определиться, как отличать рабочие и личные репозитории. Для этого, например, можно создать папки work-projects и personal-projects

Нам потребуется вернуться в корневую директорию, создать файл (если отсутствует) с названием .gitconfig и внести туда следующие настройки:

[includeIf "gitdir:~/work-projects/"]
path = ~/work-projects/.gitconfig-company

[user]
email = your_personal_email@example.com
name = Your_Name

[url "ssh://git@github.com/"]
insteadOf = https://github.com/

Далее создаем потребуется создать файл .gitconfig-company в директории work-projects, для того, чтобы была возможность авторизовываться в данной папке под корп. аккаунтом GitHub.

Содержимое файла будет .gitconfig-company примерно таким:

[user]
email = your_company_email@example.com
name = Your Name

[github]
user = "your_company_github_username"

Собственно, на этом настройка закончена, осталась проверка.

Шаг 4. Cвязка локальных и удаленных репозиториев

Вам потребуется связать локальные и удаленные репозитории. Рассмотрим это на примере корпоративного аккаунта:

  1. Перейдите в папку work-projects (либо в одну из вложенных в нее папок)
  2. Инициируйте репозиторий через git init
  3. Проверьте SSH-соединение с помощью корпоративного ключа через команду ssh -T git@github-company (в консоли вы должны увидеть приветствие корпоративного аккаунта, а не личного)
  4. Создайте связь через команду: git remote add origin git@github-company:username/repository.git
  5. Попробуйте забрать репозиторий через git pull origin main
  6. Локальный и удаленный репозиторий должны синхронизироваться

Если вы видите какие-либо ошибки, то наиболее вероятные причины могут быть на следующих шагах:

  • Неверная установка связи (например вы написали git@github.com вместо git@github-company). Исправить это можно через команду git remote set-url origin git@github-company:username/repository.git
  • Неверные настройки алиасов в родительском .gitconfig — обратите внимание на то, как у вас названы рабочие и личные папки (регистр, пробелы и т.п.)

В целом, это все, что требуется для настройки связи с несколькими аккаунтами на GitHub с одного устройства.