2 аккаунта GitHub в VS Code и SSH ключи на Windows 10
Гайд для того, чтобы использовать 2 аккаунта GitHub (с разными SSH ключами) на одной машине.
Самый простой и не очень удобный вариант - это менять параметр IdentityFile
в ssh-конфиге с помощью комментария #
каждый раз, когда нужно сменить аккаунт для работы.
Host github.com
HostName github.com
IdentityFile /c/users/lubus/.ssh/id_rsa
#IdentityFile /c/users/lubus/.ssh/id_rsa_pro
IdentitiesOnly yes
Да, метод так себе… И тем более это не решает вопрос с user.name
и user.email
.
Есть вариант использовать глобальные user.name / user.email
и локальные (для конкретных репозиториев).
Допустим глобально мы homeUser
(тот, который использует id_rsa
):
git config --global user.name "homeUser"
git config --global user.email "[email protected]"
Эти данные кстати хранятся в ~/.gitconfig
[core]
autocrlf = true
excludesfile = ~/.gitexcludes
[user]
name = homeUser
email = [email protected]
...
И вот нам приходиться поработать с определенным репозиторием из под другого пользователя GitHub.
git config --local user.name "proUser"
git config --local user.email "[email protected]"
git config --local core.sshCommand "ssh -i ~/.ssh/id_rsa_pro"
Теперь этим репозиторием управляет proUser
с ключом id_rsa_pro
.
А эти данные хранятся в: <REPO_DIR>/.git/config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
sshCommand = ssh -i ~/.ssh/id_rsa_pro
[user]
name = proUser
email = [email protected]
[remote "origin"]
url = [email protected]:proCompany/proRepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Теперь из командной строки нам доступны коммиты в proRepo
от пользователя proUser с ключом id_rsa_pro
.
Что касается VS Code - то к сожалению он не поддерживает несколько аккаунтов (для синхронизации настроек и расширений).
Расширение git-autoconfig и его настройки:
"git-autoconfig.configList": [
{
"user.name": "proUser",
"user.email": "[email protected]",
"core.sshCommand": "ssh -i ~/.ssh/id_rsa_pro"
},
{
"user.name": "homeUser",
"user.email": "[email protected]"
}
]
Это расширение будет предлагать установить локального пользователя репозитория, если такой ещё не установлен в <REPO_DIR>/.git/config
. Из перечня предложенного в настройках "git-autoconfig.configList"
(выше).
Это очень важно, чтобы избежать путаницы аккаунтов и возможно больших неприятностей.
Вы наверное обратили внимание и на строку"core.sshCommand": "ssh -i ~/.ssh/id_rsa_pro”
К сожалению, в данный момент этот плагин еще не поддерживает эту команду, но уже есть готовый Pull Request здесь.
И да, нам конечно придется выходить и входить в аккаунт GitHub через VS Code каждый раз, а так же в плагин GitHub Pull Requests and Issues, если вы его используете.