Cómo agregar múltiples cuentas Git y GitHub en la misma computadora

Curso Profesional de Git y GitHub

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

Ya aprendimos cómo firmar y verificar tus commits con una llave GPG para agregar una capa de seguridad y validación. Ahora aprenderemos cómo podemos tener más de una cuenta de GitHub / GitLab en la misma computadora.

Cabe mencionar que debemos tener minimamente la versión 2.13 de Git

Hace poco inicié en otra empresa en la cual me dijeron que por razones de seguridad y NDA (Non Disclosure Agreement) debía usar una cuenta de GitHub con el correo que me habían dado al ingresar a la empresa.

En ese momento tuve la duda de cómo puedo tener dos cuentas de Git & GitHub en la misma computadora para poder seguir trabajando en mis proyectos personales sin tener que estar saliendo y entrando de una cuenta a otra.

Al principio pensé en hacer el cambio manualmente cada vez que hiciera algún proyecto personal, pero eso realmente no es escalable y siendo sinceros, somos devs; siempre podemos hacerlo mejor y automatizarlo.

Primeros pasos

Vamos a partir de 0, para poder que cualquier persona pueda seguir esta guía. Es por eso que lo primero que vamos a realizar será generar nuestras llaves privadas (ssh-keys). Lo ideal es crear una por cada cuenta.

1. Creando nuestras llaves privadas

El proceso es muy similar en Windows / Linux y Mac OS, por ahora sigue los pasos sin importar tu sistema operativo

Este comando creará un par de llaves, una pública y una privada.

ssh-keygen -t rsa -b 4096 -C "email"

Corremos el siguiente comando para la validación del ssh-agent

eval $(ssh-agent -s)

Acá es cuando el proceso en Mac OS es un poco diferente, ya que lo que haríamos en un caso normal con una sola cuenta sería generar un archivo config, pero en este caso como vamos a agregar más de una eso será un paso que nos vamos a saltar.

Por último agregamos la llave privada al sistema. En esta caso los comandos son ligeramente distintos en Mac

Windows y Linux

ssh-add ~/.ssh/id_rsa_personal

Mac OS

ssh-add -K ~/.ssh/id_rsa_personal

Ahora únicamente debemos copiar el contenido nuestra llave pública, (la que termina en .pub) y llevarlo a GitHub. Para ello solo debes de hacer el siguiente comando en tu terminal

cat ~/.ssh/id_rsa_personal.pub

Ahora. Vas a GitHub > settings > SSH and GPG keys > New SSH key

Y listo! Ahora este mismo proceso deberás hacerlo por cada cuenta adicional que vayas a agregar, para efectos de este tutorial vamos a suponer que ya generaste tus llaves, la de tu cuenta personal y la de la cuenta de tu trabajo.

Te recomiendo cambiarles el nombre para que las puedas distinguir fácilmente. Por ejemplo así lo hice yo.

id_rsa_personal #llave privada para mi cuenta personal
id_rsa_personal.pub  #llave publica para mi cuenta personal
id_rsa_trabajo #llave privada para mi cuenta de trabajo
id_rsa_trabajo.pub #llave publica para mi cuenta de trabajo

2. Editando el archivo .gitconfig

Por lo general deberíamos de tener un archivo en nuestro root que sea donde viven las configuraciones de git el cual luce más o menos así

[user]
  name        = <Your name>
  email       = <Your email>
  signingKey  = <Your signingKey>

[init]
  defaultBranch = main

...
[other configs]
...

Lo que necesitaremos será remover todo el bloque [user] y dejar solamente las configuraciones generales.

Para ellos puedes usar el siguiente comando:

nano ~/.gitconfig

Al final deberías de tener el archivo más o menos así:

[init]
  defaultBranch = main

...
[other configs]
...

3. Añadiendo nuestras propias configuraciones

Ahora debes crear un archivo por cada cuenta que quieras agregar, supongamos que quieres agregar tu cuenta de GitHub asociada a tu correo personal y otra cuenta asociada con el correo de tu trabajo

Para crear los archivos podemos ejecutar el siguiente comando

touch ~/.gitconfig.personal ~/.gitconfig.trabajo

Cabe resaltar que el .personal y .trabajo no tienen que ser exactamente estos, puedes ponerles el nombre que más te parezca, solo recuerda que deben ser distintos entre ellos

Ahora debemos añadir las configuraciones para cada cuenta; empecemos con el archivo .gitconfig.personal, acá pondremos el bloque [user] que retiramos en el paso anterior

nano ~/.gitconfig.personal

Así deberíamos de tener el archivo .gitconfig.personal

[user]
  name        = <Your name>
  email       = <Your email>
  signingKey  = <Your signingKey>

Ahora hacemos lo mismo para la otra cuenta, la del trabajo.

nano ~/.gitconfig.trabajo

Así deberíamos de tener el archivo .gitconfig.trabajo

[user]
  name        = <Your name>
  email       = <Your work@email>
  signingKey  = <Your signingKey>

[url "git@trabajo.github.com"]
  insteadOf = git@github.com

Acá agregaremos algo adicional, y es un subhost personalizado. Debemos de tenerlo en cuenta para un paso que haremos más adelante.

¡Ya casi acabamos, queda poco

4. Definiendo las rutas de trabajo

Ahora debemos de decirle a git que cuando creemos o descarguemos un proyecto sepa que cuenta usar, y para esto debemos automatizarlo, para no tener que hacerlo manualmente cada que creemos o descargaremos proyectos.

Para esto debemos definir que cuando creemos o descargamos un proyecto en una ruta, tome una configuración de cuentas; y de hacerlo en otra ruta tome otra configuración de cuentas

Puedes definir lo de la siguiente manera:

Vas a crear una carpeta en la ruta que tú quieras almacenar todos tus proyectos personales, para simplicidad en este tutorial lo haremos así, pero recuerda que tú puedes en cualquier ruta.

  • ~/Personal/ Esta será la ruta en donde yo guardare mis proyectos personales
  • ~/Trabajo/ Esta será la ruta en donde yo guardare los proyectos que tengan que ver con el trabajo

Para crear las carpetas de manera rápida puedes usar el siguiente comando en tu terminal:

mkdir ~/Personal ~/Trabajo

Ahora a nuestro archivo .gitconfig el que es el general, el archivo base, le agregaremos las siguientes lineas:

[include]
  # Valor por default para git; de esta manera, por defecto siempre usaremos nuestra cuenta personal
  path = ~/.gitconfig.personal

[includeIf "gitdir:~/Trabajo/"]
  # Todos los proyectos que descarguemos o creemos a partir de esta ruta, usara tu cuenta de tu trabajo
  path = ~/.gitconfig.trabajo

[includeIf "gitdir:~/Personal/"]
  # Todos los proyectos que descarguemos o creemos a partir de esta ruta, usara tu cuenta personal
  # este bloque es opcional, pero debes de asegurarte de colocar el primer bloque.
  path = ~/.gitconfig.personal

[init]
  defaultBranch = main

...
[other configs]
...

5. Agregando la configuración de ssh

Ahora debemos modificar o crear un archivo config dentro de tu carpeta ~/.ssh y escribe lo siguiente:

Puedes usar el siguiente comando:

nano ~/.ssh/config
Host github.com
  User          <your github username personal account>
  HostName      github.com
  # La ruta a tu llave privada asociada a tu cuenta personal
  IdentityFile  ~/.ssh/id_rsa_personal

  # Este host tiene que ser el mismo que pusimos en el paso tres
Host trabajo.github.com
  User          <your github username work account>
  HostName      github.com
  # La ruta a tu llave privada asociada a tu cuenta de trabajo
  IdentityFile  ~/.ssh/id_rsa_trabajo

Host *
  AddKeysToAgent            yes
  IdentitiesOnly            yes
  UseKeychain               yes
  Compression               yes
  PreferredAuthentications  publickey

¡Felicidades, eso sería todo! ¡No olvides agregar tus llaves públicas a tus cuentas de GitHub!

Validaciones

Si quieres probar que todo este OK, lo podemos hacer desde nuestra terminal, solo debemos de correr los siguientes comandos:

ssh -T git@github.com
ssh -T git@trabajo.github.com

Lo que debería de salirte sería algo así, para cada cuenta:

The authenticity of host github.com (#######) can not be established.
###### key fingerprint is SHA256
This key is not known by any other names

Are you sure you want to continue connecting (yes/no/[fingerprint])? **yes**
Warning: Permanently added github.com (####) to the list of known hosts.
Hi <Your github username>! You've successfully authenticated, but GitHub does not provide shell access.

Repasa qué es Git bash

Ahora ya sabes como agregar más de una cuenta de GitHub / GitLab a una misma computadora. Recuerda que puedes ver nuestro curso profesional de Git & GitHub y seguir aprendiendo a emplear esta herramienta como toda una profesional.
Déjame saber en los comentarios si te gusto este post y que tipo de temas te gustaría aprender en mi próximo artículo para que nunca paremos de aprender.

Curso Profesional de Git y GitHub

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados