Tabla de contenido
Una vez más aquí. Hoy vengo a dejar un pequeño artículo sobre algo que me pasó estos días. La cosa es que hace años que publico cosas en Github en diferentes cuentas, pero la cuenta con la que publico las cosas que dejo en esta web, tenía como nombre de usuario sapoclay (un nick que tiene como 26 años), pero que para publicar cosas relacionadas con esta web, tenía poco que ver. El caso es que hace como cinco o seis años, me hice otra cuenta con el nombre de entreunosyceros, pero no subí ningún contenido. Ayer recordé que no había razón para seguir utilizando el nick sapoclay en GitHub. Por este motivo entre ayer y hoy me hice estepequeño script en bash que vamos a ver, llamado git remote updater. Ya que si cambias el nombre de usuario en la cuenta de GitHub, los repositorios remotos que tienes alojado en tu equipo, siguen manteniendo el nombre de usuario antiguo. Y actualmente tengo como unos 160 repositorios remotos en este equipo, por lo que cambiar el nombre de usuario uno por uno, era una tarea en la que no me quería ver metido.
Como decía, gestionar múltiples repositorios Git puede volverse complicado cuando necesitas hacer cambios globales, como actualizar el usuario de GitHub en las URLs remotas. Este problema es especialmente frecuente cuando se reorganizan cuentas, se migran proyectos o se cambia el nombre de usuario en plataformas como GitHub, como ha sido el caso que me ocupa.
En lugar de editar cada repositorio manualmente (cosa terriblemente tediosa), es posible automatizar este proceso con un script en Bash que no solo detecta repositorios automáticamente, sino que además permite decidir cuáles modificar de forma interactiva. Y todo ello con unas 97 líneas de código.
En las siguientes líneas, vamos a ver cómo funciona esta herramienta y cómo utilizarla de forma segura, para no encontrarnos con problemas repentinos.
El problema: actualizar remotos Git uno por uno
Cuando se trabaja con múltiples proyectos, cada repositorio Git mantiene una URL remota configurada en origin. Si el usuario cambia, por ejemplo:
git@github.com:usuario-antiguo/proyecto.git
a:
git@github.com:usuario-nuevo/proyecto.git
entonces todos los repositorios locales deben actualizar su configuración para poder seguir funcionando sin problemas.
El comando manual que habría que utilizar para solucionarlo sería:
git remote set-url origin nueva_url
El problema es evidente; repetir este proceso en decenas o cientos de repositorios no es eficiente ni seguro.
La solución: automatización con control interactivo usando Git remote updater
El script que vamos a ver resuelve este problema con tres pilares fundamentales:
- 🔍 Detección automática de repositorios Git (
.git) - 🔄 Actualización de remotos basada en reemplazo de usuario
- 🧑💻 Interacción manual para decidir qué repositorios modificar
Esto permite mantener control total sin perder automatización. Hay que aclarar que el script funciona dentro de las carpetas que estén contenidas en la carpeta desde donde se ejecute el script. Ya que hace búsqueda recursiva infinita hacia abajo.
Cómo funciona el script

El funcionamiento general es el siguiente:
- Escanea recursivamente el directorio actual en busca de repositorios Git
- Ignora carpetas como:
node_modulesvenv.venvvendor
- Detecta el remoto
origin - Comprueba si contiene el usuario antiguo
- Muestra la comparación entre la URL antigua y la nueva
- Permite al usuario decidir qué hacer:
y→ aplicar cambion→ saltara→ aplicar automáticamente al restoq→ salir del proceso
🧪 Modo seguro: dry-run
Antes de realizar cambios reales, el script permite ejecutar un modo simulación, con la idea de no romper nada:
--dry-run
En este modo:
- No se modifica ningún repositorio
- Solo se muestra lo que ocurriría
- Permite validar el comportamiento antes de actuar
Esto es especialmente importante en entornos con muchos proyectos.
Ejemplo de uso
Ejecución en modo interactivo
./script.sh --old usuario-antiguo --new usuario-nuevo
Durante la ejecución, el script mostrará algo como:
📁 ./proyectos/api OLD: git@github.com:usuario-antiguo/api.git NEW: git@github.com:usuario-nuevo/api.git 👉 ¿Aplicar cambio? [y]es / [n]o / [a]ll / [q]uit:
Casos de uso en los que me parece que puede ser útil
Este script creo que puede ser especialmente útil en situaciones como:
- Migración de cuenta de GitHub
- Cambio de nombre de usuario en la cuenta de GitHub
- Reestructuración de repositorios personales o profesionales
- Limpieza de entornos de desarrollo locales
- Administración de múltiples proyectos en distintas carpetas
- Automatización de mantenimiento en entornos de desarrollo
Seguridad y control
Una de las ventajas más importantes de esta herramienta es el control:
- No realiza cambios sin confirmación
- Permite revisión caso por caso
- Permite aplicar cambios masivos con una sola acción (
a) - Incluye modo simulación para evitar errores
Esto lo hace adecuado incluso para entornos con muchos repositorios críticos.
Detalles técnicos relevantes
El script utiliza varias técnicas de Bash:
findpara detección recursiva de repositorios- Filtrado de directorios pesados para optimizar rendimiento
sedpara reemplazo seguro de URLs- Control de flujo interactivo con
read - Manejo de errores con
set -euo pipefail
Además, es compatible con URLs SSH y HTTPS de GitHub.
Conclusión
La gestión de múltiples repositorios Git puede ser compleja cuando se realizan cambios estructurales en cuentas o proyectos. Este script en Bash ofrece una solución práctica, segura e interactiva para automatizar la actualización de remotos sin perder control sobre el proceso.
Gracias al modo interactivo y al soporte de simulación, se convierte en una herramienta ideal tanto para desarrolladores individuales como para entornos con múltiples proyectos distribuidos.
En resumen, se trata de una pequeña herramienta de automatización que puede ahorrar horas de trabajo repetitivo y reducir errores humanos en tareas críticas de mantenimiento. El código de este pequeño proyecto se puede consultar y descargar en el repositorio de GitHub en el que alojé el proyecto.
