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 de GitHub personal a uno en una organización, o incluso de GitHub a GitLab.
Te puede interesar:Git: enviar etiquetas a un repositorio remotoCuando 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é.
Te puede interesar:Git: aplasta varios compromisos en un solo compromisoPrimero, vayamos directamente al comando para el que estás aquí:
Te puede interesar:Git: crear una nueva rama$ 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í:
Te puede interesar:Codificación de longitud de ejecución$ git remote set-url origin https://github.com/scottwrobinson/foobar.git
Luego, puede verificar que la URL se haya actualizado utilizando el remote
comando con el -v
opción, que es la abreviatura de --verbose
:
$ git remote -v
origin https://github.com/scottwrobinson/foobar.git (fetch)
origin https://github.com/scottwrobinson/foobar.git (push)
Establecer diferentes reposiciones para Fetch y Push
Como puede ver en la salida de remote -v
, se muestran dos líneas, una perteneciente a fetch
y uno para push
. Esto significa que también puede establecer 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 enviar cambios a su versión bifurcada. Así es como manejarías eso:
Te puede interesar:Git: agregar todos los archivos a un repositorio$ git remote set-url <remote-repo> <original-repo-url>
$ git remote set-url --push <remote-repo> <forked-repo-url>
Note que el segundo comando usa el --push
opción, que le dice a Git que solo configure esa URL para push
comandos. En la práctica, la ejecución del comando se vería así:
$ 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 denomina «origen» para ambos, y solo la URL es diferente. En este ejemplo, https://github.com/scottwrobinson/foobar.git
es la versión bifurcada.
De nuevo, ejecutando el remote -v
comando podemos verificar que la URL se ha cambiado correctamente:
$ git remote -v
origin https://github.com/example/foobar.git (fetch)
origin https://github.com/scottwrobinson/foobar.git (push)
Usando diferentes protocolos
Otra cosa que quería señalar es que en todos los ejemplos anteriores solo mostraba URL HTTPS, aunque se puede usar cualquier URL Git válida. Git admite una gran cantidad de tipos de URL, algunos de los cuales puede encontrar aquí:
ssh://[email protected]/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 enviar sus cambios a otro repositorio accesible desde su sistema de archivos, entonces Git es lo suficientemente flexible para que pueda hacerlo:
$ git remote set-url origin [email protected]:example/foobar.git
$ git remote set-url --push origin file://~/projects/foobar.git