¡Hola a todos! Soy Juan Ramón González Morales, artesano del software desde Jaén. Aquí estamos con un nuevo post. Aquí estoy de nuevo, con un post donde voy a hablar de configurar múltiples cuentas en la consola git bash.
Seguramente, este sea un problema al que muchos de nosotros nos hemos enfrentado. Con los pasos que voy a indicar, podremos configurar distintas credenciales y para distintos entornos basados en git, como por ejemplo github y gitlab.
Una vez que tengamos nuestras cuentas configuradas, además, podemos empezar a organizar nuestras ramas eficientemente en git. Una de las maneras de hacerlo, fácilmente es haciendo rebase de los commit de una rama y tener un único commit por tarea.
Pues, vamos al lío, a configurar múltiples cuentas en git bash. Esto es un proceso que necesita de varios pasos que voy a ir detallando.
Generar clave SSH para la cuenta github
Lo primero que vamos a necesitar es una clave SSH para nuestra cuenta tanto en github como en gitlab.
Bien, para generar una clave ssh desde la consola de git bash tenemos que ejecutar los siguientes comandos.
ssh-keygen -t rsa "[email protected]"
ssh-keygen -t rsa -b 4096 -C "[email protected]
«ssh-keygen -t rsa -b 4096 -C "[email protected]" -f "fichero de salida"
Una vez que tenemos la clave SSH generada, hay que guardarla en un lugar donde podamos acceder. Un buen lugar sería en el directorio del usuario bajo la carpeta .ssh.
Por ejemplo, podría ser: {home_directory}/.ssh/your_email_rsa
Una vez hecho esto, tendremos 2 ficheros, una clave pública y una clave privada.
Añadir nuestra clave pública en github/gitlab
Bien, para añadir nuestra clave pública a github debemos de seguir los siguientes pasos:
- Acceder a github
- Settings
- SSH and GPG keys
- New SSH Key
- Pegar la clave pública ahí y ponerle un nombre antes te añadir.
Aquí tenemos la información para añadir una clave ssh en github.
Aquí tenemos la información para añadir una clave ssh en gitlab.
Añadir claves a ssh-agent
Una vez que tenemos nuestra clave en nuestro sistema de control de versiones. Tenemos que usar el agente ssh de la consola.
Lo ideal sería añadirla al agente ssh de la consola – ssh-agent – y hacer que trabaje por nosotros. Necesitamos levantarlo en segundo plano y añadirle la clave o claves que hemos generado. Necesitamos ejecutar dos comandos más para hacer esto:
- eval $(ssh-agent -s)
- ssh-add ~/.ssh/your_email_rsa
Con esto, el agente ssh de claves de git bash ya sabe que existen, aunque todavía nos faltan más pasos. En concreto, decirle cómo tiene que usarlas.
Configurar el host de github en la consola
Para decirle a la consola cómo trabajar con nuestras claves tenemos que configurar los hosts en la carpeta ssh. Esta carpeta está situada en {home_directory}/.ssh/
Comprobamos si ya existe el fichero config. En caso de no existir el fichero config, lo creamos. Y se añade la configuración de la cuenta.
#github cuenta de prueba
Host github.com-email
HostName github.com
user usuario
IdentityFile ~/.ssh/your_email_rsa
Lo que le hemos dicho a la consola es que usando el host github.com-email tiene que usar nuestro usuario y nuestra clave ssh en github.com. Entonces, ahora que sabemos la configuración, podemos tener un fichero host como el siguiente:
Host gitlab.com
RSAAuthentication no
IdentityFile /c/Users/Juanra/.ssh/xxxxx
.pub
User xxxxx
# github
Host github.jr.com
Hostname github.com
RSAAuthentication no
IdentityFile /c/Users/Juanra/.ssh/xxxx1.pub
User xxxx1
# gitlab
Host gitlab.jr.com
Hostname gitlab.com
RSAAuthentication no
IdentityFile /c/Users/Juanra/.ssh/xxxx2.pub
User xxxx2
Acciones con distintas cuentas
Por ejemplo, podemos hacer un pull o clonar un repositorio. Y usando el host que queremos para la acción sería fácil de hacer.
git clone [email protected]:jrgm0005/example.git
Vemos, que estamos haciendo un git clone, descargando un proyecto, usando el host github.jr.com así la consola ya sabe qué credenciales tiene que ejecutar para descargarlo.
Si queremos cambiar de usuario en la consola. por ejemplo para subir al mismo repo.
Únicamente necesitamos cambiar el nombre del usuario y confirmar que el usuario se ha actualizado en git. Para ello tenemos que hacer lo siguiente:
git config useremail "nuevo"
Y confirmar el cambio con la siguiente acción comprobando que aparece el nuevo.
git config user.email
A partir de ahora los commit ya serán realizados con el nuevo usuario que acabamos de añadir.
Configurar sshCommand en un proyecto git
Suponemos que tenemos un proyecto, ya descargado, pero con un usuario distinto, podemos indicar en la configuración de git interna del proyecto las credenciales ssh que queremos utilizar.
Para ello tenemos que cambiar la configuración, que está situada en {home/proyecto_X/.git/config} y editar el fichero config añadiendo sshCommand haciendo referencia a la clave ssh que queremos usar a partir de ahora.
Os voy a poner un ejemplo de configuración del fichero a continuación:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
sshCommand = ssh -i ~/.ssh/your_email_rsa
[remote "origin"]
url = [email protected]:jrgm0005/proyecto_X.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
Añadiendo o modificando el campo sshCommand del core de la configuración también nos sería útil para nuestro propósito.
Resumen
Hemos visto cómo configurar varias cuenta de github o gitlab en el uso de la consola git bash. Y ejemplos de cómo configurar las claves SSH y de cómo usar distintas claves para distintas acciones, cambiar de usuario en un proyecto GIT desde consola y también modificando el fichero de configuración interno del proyecto.
Ahora, que ya tenemos las cuentas configuradas, puedes echarle un vistazo al chuletario de alias de git. De esta manera, podemos usar git de manera más eficiente.
¡¡¡ Una vez sabido esto, a desarrollar toca !!!
Enlaces de interés
https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account
Comparte 🙂
Si te ha gustado el contenido de este artículo no te olvides de compartirlo ya que con eso me harías muy feliz. GRACIAS 😉
Participa 😉
Además de todo ello, si tienes dudas o puedes aportar algo con un comentario, no dudes en hacerlo. GRACIAS 😉