DEV Community

Cover image for Usar múltiples usuarios con Git
Camilo Martinez for equimancho

Posted on • Updated on

Usar múltiples usuarios con Git

Idiomas: [🇺🇸] English - [🇪🇸] Español


Si estás trabajando con múltiples usuarios de Git, por ejemplo, con uno para proyectos personales y otro para los proyectos del trabajo.

Entonces no es buena idea definir un usuario global porque todos los proyectos van a usar el mismo y puede ser muy fácil terminar haciendo un commit con el usuario incorrecto.

Amend

Si ese es tu caso, no te preocupes. No es realmente un problema porque se puede enmendar (ammend) con este comando.



git commit --author="First Last <first.last@company.org>" --amend --no-edit 


Enter fullscreen mode Exit fullscreen mode

Pero seamos sinceros, ¿quién quiere estar ejecutando este comando frecuentemente?. Seguramente casi nadie. Es una de esas cosas que solo queremos tener en cuenta en casos de emergencia.


Configuración de Git

Lo primero que me gusta hacer es cambiar el editor por defecto de git de vim a VSCode. Aunque es algo opcional, si te sientes bien editando directamente desde la terminal.



git config --global core.editor 'code --wait'


Enter fullscreen mode Exit fullscreen mode

Y lo otro es crear dos alias, para acceder y editar fácilmente las configuraciones.



alias gcg="git config --edit --global"
alias gcl="git config --edit --local"


Enter fullscreen mode Exit fullscreen mode

La diferencia entre ellas es que global aplica para todos los proyectos de Git en tu máquina y local solo aplica al proyecto en la ruta actual.


Ahora vamos a aprender como usar diferentes usuarios en cada proyecto.

Remover el Global 👌

Este paso es recomendado, pero también es opcional. En mi caso prefiero no tener un usuario por defecto para todos los proyectos.

Vamos a abrir la configuración global utilizando el alias gcg o con el comando git config --edit --global y eliminar todas las configuraciones que tengan que ver con [credential] y [user].

La complicada 👎

Una forma es que después de crear o clonar un repositorio, definas manualmente la configuración con estos comandos.



git config user.name "<user>"
git config user.email "<user@mail.com>"
git config credential.username "<user>"


Enter fullscreen mode Exit fullscreen mode

Puede ser buena idea si no tienes una ruta específica para crear o clonar tus proyectos, pero... toma muchísimo tiempo y es muy fácil de olvidar, créeme, además vas a necesitar repetir lo mismo con cada repositorio que clones.

La recomendada 👍

Lo primero es definir una ruta específica para diferenciar nuestros proyectos y crear un archivo .gitconfig para cada perfil de usuario, tantos como sean necesarios.



~
├── .gitconfig <-- global
└── Developer/
   ├── personal/
   │   ├── proyecto_1/
   │   ├── proyecto_2/
   │   ├── proyecto_#/
   │   └── .gitconfig <-- personal
   └── empresa/
       ├── proyecto_1/
       ├── proyecto_2/
       ├── proyecto_#/
       └── .gitconfig <-- empresa


Enter fullscreen mode Exit fullscreen mode

Personal



# ~/Developer/personal/.gitconfig

[credential]
    username = <usuario-github>
[user]
    name = <usuario-github>
    email = <usuario-github>@users.noreply.github.com


Enter fullscreen mode Exit fullscreen mode

Empresa



# ~/Developer/company/.gitconfig

[credential]
    username = <user>
[user]
    name = <Nombre Apellido>
    email = <usuario>@empresa.org


Enter fullscreen mode Exit fullscreen mode

Global

Ahora vamos a abrir la configuración global usando el alias gcg o el comando git config --edit --global.



# ~/.gitconfig

[includeIf "gitdir/i:~/Developer/personal/"]
    path = ~/Developer/personal/.gitconfig

[includeIf "gitdir/i:~/Developer/empresa/"]
    path = ~/Developer/empresa/.gitconfig


Enter fullscreen mode Exit fullscreen mode

Así, tomará la configuración del usuario de cada "perfil" dependiendo de la ruta y podrás crear o clonar proyectos dentro de cada uno de ellos sin tener que estar lidiando con configuraciones manuales y evitando tener que usar el comando amend para corregir errores.


Agradecimientos especiales a feregri_no y ChrisFt25 de Twitter por enseñarme estos trucos.

That’s All Folks!
Happy Coding 🖖

cerveza

Top comments (3)

Collapse
 
jgithub25 profile image
Jairo Espinel Ángel

¡Muchas gracias Camilo, muy útil la información! Bacano seguir el tema con cómo usar varias cuentas de GitHub desde una misma máquina (en mi caso dieferenciando con SSH y HTTPS).

Collapse
 
equiman profile image
Camilo Martinez

Con gusto compa!

Collapse
 
equiman profile image
Camilo Martinez

Para quienes usen Windows, la configuración global es un poco diferente en cuanto a las rutas.

[includeIf "gitdir/i:D:/Developer/personal/"]
    path = D:/Developer/personal/.gitconfig

[includeIf "gitdir/i:D:/Developer/empresa/"]
    path = D:/Developer/empresa/.gitconfig
Enter fullscreen mode Exit fullscreen mode