это звучит очень похоже на мою текущую работу. кажется, что вы уже настроили свой отдельный файл, ssh-keysпоэтому вам также необходимо создать ~/.ssh/configфайл и заполнить его информацией, подобной этой:
Host work.github.com
HostName github.com
User WORK_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_rsa
IdentitiesOnly yes
Host personal.github.com
HostName github.com
User PERSONAL_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_personal_rsa
IdentitiesOnly yes
Каждое свойство звучит довольно понятно, кроме IdentitiesOnlyодного. Я не буду пытаться объяснять, для чего это нужно, но это в моей текущей настройке и работает нормально.
Также стоит отметить, что Host URLэто всего лишь указатель для получения правильных пользовательских настроек и не влияет на правильное получение файлов по вашему целевому HostNameURL.
Теперь вам просто нужно убедиться, что ваш origin(или любой другой remote) URL-адрес соответствует правильному HostURL-адресу в ваших соответствующих репозиториях в зависимости от вашего имени пользователя. Если у вас уже есть существующие личные репозитории, вы можете отредактировать .git/configфайл этого репо в текстовом редакторе:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
или сделать это через командную строку:
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
Как и ваш рабочий:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@work.github.com:your_work_organization/project.git
или снова через командную строку:
git remote set-url origin git@work.github.com:your_work_organization/project.git
Конечно, вы всегда можете указать один из своих HostURL-адресов в своем ~/.ssh/configфайле как
Host github.com
Раньше я только work.github.comдля того, чтобы легче было видеть взаимосвязь конфигурации.
После того, как все они настроены, вы сможете нажимать на каждый соответствующий пульт.
РЕДАКТИРОВАТЬ
Следует отметить, что я только что обнаружил, что если вы когда-нибудь устанавливаете глобальные значения конфигурации git для своих user.email значения (и я предполагаю, user.nameчто также отправит другое значение), git покажет ваши коммиты как этот пользователь электронной почты. Чтобы обойти это, вы можете переопределить глобальные настройки конфигурации git в вашем локальном репозитории:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
Теперь он должен отправлять коммиты как правильный пользователь для этого репо.