это звучит очень похоже на мою текущую работу. кажется, что вы уже настроили свой отдельный файл, 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
это всего лишь указатель для получения правильных пользовательских настроек и не влияет на правильное получение файлов по вашему целевому HostName
URL.
Теперь вам просто нужно убедиться, что ваш origin
(или любой другой remote
) URL-адрес соответствует правильному Host
URL-адресу в ваших соответствующих репозиториях в зависимости от вашего имени пользователя. Если у вас уже есть существующие личные репозитории, вы можете отредактировать .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
Конечно, вы всегда можете указать один из своих Host
URL-адресов в своем ~/.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
Теперь он должен отправлять коммиты как правильный пользователь для этого репо.