esto suena muy similar a mi configuración de trabajo actual. parece que ya ha configurado sussh-keys
por lo que también necesita crear un ~/.ssh/config
archivo y completarlo con información similar a esta:
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
Cada propiedad suena bastante autoexplicativa, pero la IdentitiesOnly
única. No intentaré explicar para qué sirve, pero está en mi configuración actual y funciona bien.
También vale la pena señalar que Host URL
es solo un puntero para obtener la configuración de usuario correcta y no tiene ningún efecto en la obtención de los archivos correctamente en su HostName
URL de destino .
Ahora solo necesita asegurarse de que su URL origin
(o cualquiera remote
en general) coincida con la Host
URL correcta en sus respectivos repositorios según su nombre de usuario. Si ya tiene repositorios personales existentes, puede editar los repositorios.git/config
archivo de en su editor de texto:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
o hacerlo a través de la línea de comando:
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
Lo mismo ocurre con tu trabajo uno:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@work.github.com:your_work_organization/project.git
o de nuevo, a través de la línea de comando:
git remote set-url origin git@work.github.com:your_work_organization/project.git
Por supuesto, siempre puede configurar una de sus Host
URL en su ~/.ssh/config
archivo como
Host github.com
Solo solía work.github.com
ver las relaciones de configuración más fáciles.
Una vez que estén todos configurados, debería poder presionar a cada control remoto respectivo.
EDITAR
Una cosa a tener en cuenta que acabo de descubrir es que si alguna vez establece valores de configuración global de git para su user.email
valor (y supongo user.name
que también enviaría un valor diferente), git mostrará sus confirmaciones como ese usuario de correo electrónico. Para evitar esto, puede anular la configuración de configuración global de git dentro de su repositorio local:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
Esto debería enviar confirmaciones como el usuario correcto para ese repositorio.