Por Anónimo (no verificado) , 29 Abril 2026

Introducción

Un remoto es una URL nombrada que apunta a otro repositorio Git. git clone crea uno llamado origin automáticamente, pero puedes añadir tantos como quieras. Los remotos son el puente entre tu repo local y el mundo exterior.

Listando e inspeccionando

git remote
git remote -v
git remote show origin

git remote show contacta al servidor y reporta los branches rastreados, reglas de push y refs obsoletas.

Añadiendo y eliminando

git remote add upstream https://github.com/original/widget.git
git remote rename upstream origin-upstream
git remote remove origin-upstream

El patrón fork-y-upstream es común: origin es tu fork, upstream es el proyecto del que hiciste fork.

Cambiando una URL

Si un proyecto se mueve de HTTPS a SSH o a un nuevo host:

git remote set-url origin [email protected]:example/widget.git
git remote -v

Múltiples URLs

Puedes hacer push a varios mirrors a la vez añadiendo URLs de push extra:

git remote set-url --add --push origin [email protected]:example/widget.git
git remote -v

Podando branches obsoletos

Cuando los branches se eliminan en el servidor, tus refs/remotes/origin/* locales pueden quedarse desfasados. Límpialos:

git fetch --prune
git remote prune origin

O configúralo permanentemente:

git config --global fetch.prune true

Inspeccionando el seguimiento

git branch -vv
# main           a1b2c3d [origin/main] Latest fix
# feature/login  e4f5g6h [origin/feature/login: ahead 2] WIP

-vv muestra el upstream de cada branch y cuán adelante/atrás está.

Reescritura con insteadOf

Si las URLs de un proyecto cambian (HTTPS a SSH, migración de host, o quieres que todas las URLs de GitHub usen SSH automáticamente), insteadOf las reescribe transparentemente:

git config --global url."[email protected]:".insteadOf "https://github.com/"
git config --global url."https://github-mirror.example.com/".insteadOf "https://github.com/"

Esto es especialmente útil en CI, donde puedes reescribir todos los clones a un mirror local con una línea de configuración, sin necesidad de editar scripts. La dirección inversa (pushInsteadOf) te permite hacer fetch por HTTPS pero push por SSH desde el mismo remoto.

Flujos triangulares

En código abierto, típicamente haces fetch desde upstream (el proyecto canónico) y push a origin (tu fork personal). Configura una vez y olvídate:

git remote add upstream https://github.com/project/repo.git
git config branch.main.remote upstream
git config branch.main.pushRemote origin
git config --global push.default current

Ahora git pull lee desde upstream y git push escribe a tu fork, automáticamente. La configuración remote.pushDefault aplica la regla a cada branch en un clon.

Errores comunes

Confundir el nombre de un remoto con su URL. origin es solo una etiqueta; puedes renombrarlo. Otra trampa: añadir la misma URL bajo dos nombres diferentes, y luego sorprenderse por refs duplicadas. Usa git remote -v para auditar. Olvidar hacer git fetch después de cambiar de red o cambiar URL deja tus branches de seguimiento desactualizados. Finalmente, en servidores compartidos, eliminar un ref de seguimiento remoto localmente (p.ej. git branch -dr origin/main) no elimina el branch en el servidor; usa git push origin --delete main para eso, y solo cuando realmente lo desees.