这听起来与我目前的工作非常相似。似乎您已经设置了单独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
将~/.ssh/config
文件中的网址之一设置为
Host github.com
我以前只是work.github.com
看配置关系比较容易。
设置完所有这些之后,您应该可以将其推入每个相应的遥控器。
编辑
需要注意的一件事是,我自己发现,如果您为自己的user.email
值设置了全局git config值(并且我user.name
想也会发送不同的值),则git将显示您作为该电子邮件用户的提交。为了解决这个问题,您可以在本地存储库中覆盖全局git config设置:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
现在,这应该以该存储库的正确用户身份发送提交。