Usar múltiples usuarios con Git
Tags: spanish, git, github, productivity
Published: 2022-10-19 22:42:30

Idiomas: [🇺🇸] [English](https://dev.to/equiman/how-to-use-multiple-users-with-git-2e9l) - [🇪🇸] [Español](https://dev.to/equimancho/usar-multiples-usuarios-con-git-1fci)

---

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 
```

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.

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

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

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

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.

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

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.

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

### Personal

```yaml
# ~/Developer/personal/.gitconfig

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

### Empresa

```yaml
# ~/Developer/company/.gitconfig

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

### Global

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

```yaml
# ~/.gitconfig

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

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

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](https://twitter.com/feregri_no)** y **[ChrisFt25](https://twitter.com/ChrisFt25)** de Twitter por enseñarme estos trucos.

**That’s All Folks!**
**Happy Coding** 🖖

[![cerveza](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h4zle20oa7anpfjvap8n.png)](https://github.com/sponsors/deinsoftware)