это звучит очень похоже на мою текущую работу. кажется, что вы уже настроили свой отдельный 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
, чтобы легче увидеть отношения конфигурации.
После того, как они все настроены, вы сможете нажать на каждый соответствующий пульт.
EDIT
Одна вещь, которую я только что узнал, это то, что если вы когда-нибудь установите глобальные значения конфигурации git для своего значения user.email
(и я предполагаю, что user.name
также отправит другое значение), git покажет ваши коммиты в качестве этого пользователя электронной почты. Чтобы обойти это, вы можете переопределить глобальные настройки git config в вашем локальном репозитории:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
Теперь он должен отправлять коммиты как правильный пользователь для этого репо.