Данная статья-гайд является логическим завершением статьи о настройке Git на CentOS 7, так как охватывает более частный случай, а именно ситуацию, в которой необходимо связать локальные репозитории и несколько аккаунтов на 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вязка локальных и удаленных репозиториев
Вам потребуется связать локальные и удаленные репозитории. Рассмотрим это на примере корпоративного аккаунта:
- Перейдите в папку work-projects (либо в одну из вложенных в нее папок)
- Инициируйте репозиторий через git init
- Проверьте SSH-соединение с помощью корпоративного ключа через команду ssh -T git@github-company (в консоли вы должны увидеть приветствие корпоративного аккаунта, а не личного)
- Создайте связь через команду: git remote add origin git@github-company:username/repository.git
- Попробуйте забрать репозиторий через git pull origin main
- Локальный и удаленный репозиторий должны синхронизироваться
Если вы видите какие-либо ошибки, то наиболее вероятные причины могут быть на следующих шагах:
- Неверная установка связи (например вы написали git@github.com вместо git@github-company). Исправить это можно через команду git remote set-url origin git@github-company:username/repository.git
- Неверные настройки алиасов в родительском .gitconfig — обратите внимание на то, как у вас названы рабочие и личные папки (регистр, пробелы и т.п.)
В целом, это все, что требуется для настройки связи с несколькими аккаунтами на GitHub с одного устройства.