Git: cambiar la URL del repositorio remoto

Si bien inicialmente pensé que es muy raro que un repositorio remoto cambie de ubicación, en realidad sucede mucho más de lo que pensaba. Un repositorio remoto puede...

Si bien inicialmente pensé que es muy raro que un repositorio remoto cambie de ubicación, en realidad sucede mucho más de lo que pensaba. Un repositorio remoto puede cambiar de un servidor privado a otro (como un NAS), de un repositorio GitHub personal a uno en una organización, o incluso de GitHub a GitLab.

Cuando esto suceda, deberá cambiar la URL de su repositorio remoto en su repositorio local. En este breve artículo, eso es exactamente lo que cubriré.

Primero, vayamos directamente al comando por el que está aquí:

1
$ git remote set-url <remote-repo> <remote-repo-url>

Entonces, si desea cambiar la URL de "origen" a una nueva URL en mi cuenta de GitHub, el comando podría verse así:

1
$ git remote set-url origin https://github.com/scottwrobinson/foobar.git

Luego puede verificar que la URL se actualizó usando el comando remote con la opción -v, que es la abreviatura de --verbose:

1
2
3
$ git remote -v
origin  https://github.com/scottwrobinson/foobar.git (fetch)
origin  https://github.com/scottwrobinson/foobar.git (push)

Configuración de diferentes repositorios para Fetch and Push {#setting differentreposforfetchandpush}

Como puede ver en la salida de remote -v, se muestran dos líneas, una correspondiente a fetch y otra a push. Esto significa que también puede configurar diferentes URL según el comando que esté ejecutando.

Un ejemplo de este caso de uso es si ha bifurcado el repositorio de alguien y desea continuar obteniendo actualizaciones de ellos, pero luego solo desea empujar cambios a su versión bifurcada. Así es como manejarías eso:

1
2
$ git remote set-url <remote-repo> <original-repo-url>
$ git remote set-url --push <remote-repo> <forked-repo-url>

Observe que el segundo comando usa la opción --push, que le dice a Git que solo configure esa URL para los comandos push. En la práctica, la ejecución del comando se vería así:

1
2
$ git remote set-url origin https://github.com/example/foobar.git
$ git remote set-url --push origin https://github.com/scottwrobinson/foobar.git

Tenga en cuenta que el repositorio remoto se llama "origen" para ambos, y solo la URL es diferente. En este ejemplo, https://github.com/scottwrobinson/foobar.git es la versión bifurcada.

Nuevamente, al ejecutar el comando remote -v podemos verificar que la URL se haya cambiado con éxito:

1
2
3
$ git remote -v
origin  https://github.com/example/foobar.git (fetch)
origin  https://github.com/scottwrobinson/foobar.git (push)

Uso de diferentes protocolos {#uso de diferentes protocolos}

Otra cosa que quería señalar es que en todos los ejemplos anteriores solo mostré las URL de HTTPS, aunque se puede usar cualquier URL de Git válida. Git admite una gran cantidad de tipos de URL, algunos de los cuales puede encontrar aquí:

1
2
3
4
ssh://[correo electrónico protegido]/path/to/repo.git
git://host.com/path/to/repo.git
https://host.com/path/to/repo.git
file:///path/to/repo.git

Entonces, si por alguna razón desea extraer de un repositorio remoto en GitHub, pero luego solo envía sus cambios a otro repositorio accesible desde su sistema de archivos, entonces Git es lo suficientemente flexible para que pueda hacerlo:

1
2
$ git remote set-url origin [correo electrónico protegido]:example/foobar.git
$ git remote set-url --push origin file://~/projects/foobar.git
Licensed under CC BY-NC-SA 4.0