DEV Community

Cover image for Gestionar múltiples configuraciones de servicios de control de versiones (Cualquier S.O) - Sin conflictos
Paula Pereyra
Paula Pereyra

Posted on

Gestionar múltiples configuraciones de servicios de control de versiones (Cualquier S.O) - Sin conflictos

Este blog se creó a partir de mi necesidad de tener más ordenadas las diferentes configuraciones de los servicios de control de versiones. Yo utilizo Gitlab para mi trabajo, Github para proyectos propios que quiero compartir, y Gogs (que inició como prueba pero terminó siendo un lugar donde guardo configuraciones y backup de notas privadas junto con un familiar).

A lo que voy, necesito tenerlo separado, porque sino es un lío, y si hay que realizar una modificación, si no se sabe bien qué se está tocando, se puede ocasionar un desastre 😅.

Aquí tienes algunos pasos que puedes seguir, porque estuve investigando y es bastante sencillo.

Importante saber: Git utiliza un archivo de configuración global (~/.gitconfig) donde puedes establecer parámetros que afectarán a todos los repositorios. Sin embargo, para manejar diferentes servicios, puedes establecer configuraciones específicas para cada repositorio. Esto incluye las credenciales (usuario y correo electrónico) y el remoto.

Un servicio

Configuración global

Normalmente, si tienes un solo servicio, lo mejor es tener configuraciones globales, puedes establecer tu nombre y correo electrónico en tu archivo global .gitconfig. Por ejemplo:

git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@ejemplo.com"
Enter fullscreen mode Exit fullscreen mode

Y se usará esa configuración para todos los repositorios que crees. Es más fácil.

Más de un servicio

Opción 1: Configuración específica para cada repositorio

Puedes, aunque es más manual, para cada repositorio, establecer las configuraciones específicas que necesites.
Navega a la carpeta del repositorio y ejecuta:

cd /ruta/a/tu/repositorio
git config user.name "Tu Nombre para Gogs"
git config user.email "tu.email@gogs.com"
Enter fullscreen mode Exit fullscreen mode

Haz lo mismo para los repositorios de GitHub y GitLab cuando trabajes en ellos.
Lo tienes que hacer una vez, cuando creas el repositorio y vas a subir un cambio a remoto, y luego para los demás tomará la configuración que hayas puesto.

Importante: Configura los remotos

Cuando añadas un nuevo remoto, asegúrate de que apunte al servidor correcto. Por ejemplo, para un repositorio de Gogs, puedes añadir el remoto así:

git remote add origin https://gogs.ejemplo.com/usuario/repositorio.git
Enter fullscreen mode Exit fullscreen mode

Para GitHub o GitLab, haz lo mismo:

git remote add origin https://github.com/usuario/repositorio.git
Enter fullscreen mode Exit fullscreen mode

Así cuando hagas git push origin rama se subirá al repositorio referenciado en el git remote y con las configuración hecha a nivel repositorio.

Opción 2: Uso de SSH (opcional pero recomendado)

Si usas SSH para autenticarte, puedes crear diferentes claves SSH para cada servicio y configurar el archivo ~/.ssh/config para gestionar las conexiones de forma más sencilla.

  1. Generar claves SSH (si no tienes):
ssh-keygen -t rsa -b 4096 -C "tu.email@ejemplo.com"
Enter fullscreen mode Exit fullscreen mode
  1. Agregar las claves al agente SSH:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_gogs
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab
Enter fullscreen mode Exit fullscreen mode
  1. Configurar el archivo ~/.ssh/config:
# Gogs
Host gogs
    HostName gogs.ejemplo.com
    User git
    IdentityFile ~/.ssh/id_rsa_gogs

# GitHub
Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github

# GitLab
Host gitlab
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/id_rsa_gitlab
Enter fullscreen mode Exit fullscreen mode
  1. Usar los remotos con las configuraciones de SSH:

En lugar de usar las URL HTTPS, puedes usar las configuraciones de SSH:

git remote add origin gogs:usuario/repositorio.git
git remote add origin github:usuario/repositorio.git
git remote add origin gitlab:usuario/repositorio.git
Enter fullscreen mode Exit fullscreen mode

Con estos pasos, deberías poder gestionar tus repositorios en Gogs, GitHub y GitLab desde la misma máquina sin que se interfieran entre sí. Asegúrate de siempre estar en el directorio correcto antes de ejecutar comandos de Git y de haber configurado adecuadamente las credenciales y remotos para cada proyecto.

Si hay algún comando que esté incorrecto, o quieres aportar en los comentarios, eres bienvenido :)

Top comments (0)