Skip to content

✉️ Discover TinkMail

Powerful email solutions for personal and business use

Get Started Free

GIT: Usar diferentes configuraciones (nombre de usuario / gmail o claves SSH) en diferentes proyectos

🎫 El contenido se validó el 2023-03-06 para las siguientes plataformas
✅ Git 2.37

Antecedentes

Cuando usamos Git, a menudo configuramos algunos elementos básicos de configuración, como el nombre de usuario (user.name) y el correo electrónico (user.email). Si no están configurados, la primera vez que uses Git para confirmar código reportará un error:

Make sure you configure your 'user.email' and 'user.name' in git

Podemos solucionar esto usando el comando git config para establecer los valores.

sh
git config --global user.name "Tinymemo"
git config --global user.email "[email protected]"

Este comando en realidad escribe dos elementos de configuración en el archivo de configuración global: user.name y user.email. Podemos intentar abrir el archivo de configuración (generalmente ubicado en ~/.gitconfig o C:\Users\<username>\.gitconfig):

[user]
        name = Tinymemo
        email = tinymemo

Si no ejecutamos el comando con la opción --global, el archivo de configuración se escribirá en el directorio actual, generalmente ubicado en .git/config.

Usar diferentes configuraciones en diferentes proyectos

Cuando queremos participar en proyectos con diferentes identidades, necesitamos usar diferentes configuraciones en cada proyecto. Pero no queremos escribir configuraciones separadas en cada proyecto, porque tendríamos que usar la configuración global si el proyecto no tiene una configuración. Así que necesitamos una mejor manera.

Afortunadamente, Git proporciona la directiva includeIf, que puede usarse para especificar diferentes configuraciones para diferentes rutas.

Supongamos que tenemos las siguientes dos rutas:

  • ~/work el nombre de usuario y correo electrónico correspondiente es Tinymemo / [email protected]
  • ~/hobby el nombre de usuario y correo electrónico correspondiente es Tinymemo / [email protected]

Primero, creamos dos archivos de configuración separados:

~/.gitconfig-work

[user]
        name = Tinymemo
        email = [email protected]

~/.gitconfig-hobby

[user]
        name = Tinymemo
        email = [email protected]

Luego agregamos las siguientes líneas al archivo de configuración global ~/.gitconfig, por favor note la última barra en la ruta:

[includeIf "gitdir:~/work/"]
    path = ~/.gitconfig-work
[includeIf "gitdir:~/hobby/"]
    path = ~/.gitconfig-hobby

Entonces podemos verificar en el directorio correspondiente del proyecto:

sh
# ~/work/project1
git config user.name // Tinymemo
git config user.email // [email protected]

# ~/hobby/project2
git config user.name // Tinymemo
git config user.email // [email protected]

Nota: debes ejecutar el comando git config en el directorio del proyecto, de lo contrario usará la configuración global.

Así podemos facilitar el uso de diferentes configuraciones en diferentes proyectos.

Usar diferentes configuraciones para clave pública/privada

La configuración anterior facilita el uso de diferentes nombres de usuario y correo electrónico para diferentes proyectos, pero también queremos usar diferentes claves SSH públicas/privadas para diferentes proyectos en algunos casos.

Primero, necesitamos crear una nueva clave pública. Si ya tenemos una clave pública, podemos omitir este paso.

sh
cd ~/.ssh
ssh-keygen -t rsa

Por favor, tenga en cuenta el nombre del archivo, no puede ser el nombre predeterminado id_rsa, de lo contrario entrará en conflicto con la clave pública existente.

Enter file in which to save the key (/Users/tinymemo/.ssh/id_rsa): id_rsa_hobby

Simplemente presiona enter todo el tiempo.

Luego podemos agregar un nuevo elemento de configuración al archivo de configuración, para especificar la nueva clave pública para el comando ssh:

[core]
    sshCommand = "ssh -i ~/.ssh/id_rsa_hobby -F /dev/null"

Después de esto, podemos usar diferentes claves públicas/privadas para diferentes proyectos:

Resumen

Mediante el uso de la directiva [includeIf] en la configuración global, podemos usar fácilmente diferentes nombres de usuario, correo electrónico y clave pública/privada para diferentes proyectos en diferentes directorios.