¿Cómo cambiar el URI (URL) para un repositorio Git remoto?

3898

Tengo un repositorio (origen) en una llave USB que cloné en mi disco duro (local). Moví el "origen" a un NAS y probé con éxito la clonación desde aquí.

Me gustaría saber si puedo cambiar el URI de "origen" en la configuración de "local" para que ahora se extraiga del NAS y no de la llave USB.

Por ahora, puedo ver dos soluciones:

  • empuje todo al usb-orign, y cópielo nuevamente al NAS (implica mucho trabajo debido a los nuevos commits a nas-origin);

  • agregue un nuevo control remoto a "local" y elimine el anterior (me temo que romperé mi historial).

e-satis
fuente
66
Tuve que hacer esto en una versión anterior de git (1.5.6.5) y la opción set-url no existía. Simplemente eliminar el control remoto no deseado y agregar uno nuevo con el mismo nombre funcionó sin problemas y mantuvo el historial bien.
HotN
en mi caso, necesito verificar mi permiso, tengo dos repositorios privados de git y esta segunda cuenta es la administradora de ese nuevo repositorio y la primera es mi cuenta de usuario predeterminada y debería otorgar permiso a primero
saber tabatabaee yazdi

Respuestas:

6337

Usted puede

git remote set-url origin new.git.url/here

(ver git help remote) o simplemente puede editar .git/configy cambiar las URL allí. No está en peligro de perder el historial a menos que haga algo muy tonto (y si está preocupado, simplemente haga una copia de su repositorio, ya que su repositorio es su historial).

hobbs
fuente
29
Si tiene un usuario de shell diferente, entonces tal vez desee especificar su usuario de git al comienzo de la nueva url, por ejemplo:myself@git://new.url.here
sobi3ch
13
También es posible que desee establecer la rama ascendente principal para su nueva ubicación con origen: git branch -u origin/master. Esto le permitirá hacerlo en git pushlugar de tener que hacerlo git push origin mastercada vez.
kelorek
32
@kelorek o puedes simplemente git push -u origin masterla primera vez :)
hobbs
26
También tuve que hacerlo git remote set-url --push origin git://...para establecer el origen ... (push) url.
jpillora
3
Para varias ramas, puede usar git push -u --allpara empujar todas las ramas a la vez a una nueva url (en lugar de git push -u origin master)
Ben
902
git remote -v
# View existing remotes
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
# Change the 'origin' remote's URL

git remote -v
# Verify new remote URL
# origin  https://github.com/user/repo2.git (fetch)
# origin  https://github.com/user/repo2.git (push)

Cambiar la URL de un control remoto

Utensilio
fuente
101

Cambiar host para un servidor de origen Git

de: http://pseudofish.com/blog/2010/06/28/change-host-for-a-git-origin-server/

Esperemos que esto no sea algo que debas hacer. El servidor que he estado usando para colaborar en algunos proyectos de git expiró. Esto significaba encontrar una forma de migrar los repositorios locales para volver a sincronizarse.

Actualización: Gracias a @mawolf por señalar que hay una manera fácil con las versiones recientes de git (posteriores a febrero de 2010):

git remote set-url origin ssh://newhost.com/usr/local/gitroot/myproject.git

Vea la página del manual para más detalles.

Si tiene una versión anterior, intente esto:

Como advertencia, esto funciona solo porque es el mismo servidor, solo que con diferentes nombres.

Suponiendo que el nuevo nombre de host es newhost.com, y el anterior oldhost.com, el cambio es bastante simple.

Edite el .git/configarchivo en su directorio de trabajo. Deberías ver algo como:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://oldhost.com/usr/local/gitroot/myproject.git

Cambie oldhost.coma newhost.com, guarde el archivo y listo.

De mis pruebas limitadas ( git pull origin; git push origin; gitx) todo parece estar en orden. Y sí, sé que es una mala forma meterse con git internos.

yoda
fuente
¿Mala forma? Quizás. Pero si necesita hacer algo que los autores no esperaban que alguien tuviera que hacer, entonces a veces es necesario meterse con lo interno. Pero debe estar dispuesto a aceptar las consecuencias si se equivoca. Backup your local repository _before_ messing with git internals.
Jesse Chisholm
56
git remote set-url origin git://new.location

(alternativamente, abra .git/config, busque [remote "origin"]y edite la url =línea.

Puede verificar que funcionó examinando los controles remotos:

git remote -v
# origin  git://new.location (fetch)
# origin  git://new.location (push)

La próxima vez que presione, deberá especificar la nueva rama ascendente, por ejemplo:

git push -u origin master

Ver también: GitHub: Cambiar la URL de un control remoto

Zaz
fuente
No pude establecer el nuevo origen editando .git / config. Decía que el repositorio git nombrado en la URL no era un repositorio git. Una vez que eliminé y recreé el origen, todo estuvo bien. Sin embargo, no había buscado git remote set-url como solución a mi problema.
octopusgrabbus
+1 por proporcionar una respuesta completa con el git push -ucomando. Quizás obvio para los demás, no era para mí.
testphreak
37

Cambiar URL remotas

Terminal abierta

Primer paso: - Cambie el directorio de trabajo actual a su proyecto local.

Segundo paso: - Enumere sus controles remotos existentes para obtener el nombre del control remoto que desea cambiar.

git remote -v

origin  https://github.com/USERNAME/REPOSITORY.git (fetch)

origin  https://github.com/USERNAME/REPOSITORY.git (push)

Cambie la URL de su control remoto de HTTPS a SSH con el comando git remote set-url.

3er paso: - git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

4to Paso: - Verifique ahora que la URL remota ha cambiado.

git remote -v Verificar nueva URL remota

origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
origin  [email protected]:USERNAME/REPOSITORY.git (push)
VIKAS KOHLI
fuente
¿Tiene que eliminar el origen anterior antes de agregar el nuevo origen?
Sledge
No eliminé nada del proyecto. Simplemente hago los pasos anteriores y funcionó
VIKAS KOHLI
27
  1. eliminar el origen usando el comando en gitbash git remote rm origin
  2. Y ahora agregue un nuevo origen usando gitbash git remote add origin (copie la URL HTTP del repositorio de su proyecto en bit bucket) hecho
Sunil Chaudhary
fuente
Esta es una respuesta realmente útil porque sin git remote rm origingit recuerda detalles sobre el antiguo origen.
mato
Lo anterior git remote rm originresuelve el problema de los controles remotos múltiples: problema en el que no pude configurar la URL remota. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsand
21

git remote set-url {nombre} {url}

ex) git remote set-url origin https://github.com/myName/GitTest.git

bong jae choe
fuente
19

Escriba el siguiente comando desde su terminal de repositorio:

git remote set-url origin [email protected]:<username>/<repo>.git

Consulte este enlace para obtener más detalles sobre cómo cambiar la URL en el control remoto.

viveknaskar
fuente
1
El enlace fue útil
ANP
16

si clonaste tu local consistirá automáticamente,

URL remota donde se clona.

puedes verificarlo usando git remote -v

si quieres hacer un cambio en él,

git remote set-url origin https://github.io/my_repo.git

aquí,

origen - tu rama

si desea sobrescribir la rama existente, aún puede usarla ... anulará su existente ... lo hará,

git remote remove url
and 
git remote add origin url

para ti...

Mohideen bin Mohammed
fuente
Tenía varios controles remotos agregados, por lo que git remote rm originse necesitaba un comando para eliminar todas las URL asociadas. Entonces el comando agregar funcionó.
bitsand
14

Para verificar la conexión remota de git:

git remote -v

Ahora, configure el repositorio local en git remoto:

git remote set-url origin https://NewRepoLink.git

Ahora para hacerlo en sentido ascendente o push use el siguiente código:

git push --set-upstream origin master -f

Anupam Maurya
fuente
1
Estaba presionando y, sin embargo, Github no mostró mi nueva rama. Eso último lo --set-upstreamhizo funcionar.
OoDeLally
12

Tienes muchas formas de hacerlo:

Consola

git remote set-url origin [Here new url] 

Solo asegúrese de haberlo abierto en un lugar donde esté un repositorio.

Config

Se coloca en .git / config (misma carpeta que el repositorio)

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = [Here new url]  <------------------------------------
...

TortugaGit

Paso 1 - abra la configuración

Paso 2 - cambiar url

Luego solo edite la URL.

SourceTree

  1. Haga clic en el botón "Configuración" en la barra de herramientas para abrir la ventana Configuración del repositorio.

  2. Haga clic en "Agregar" para agregar una ruta de repositorio remoto al repositorio. Se abrirá una ventana de "Detalles remotos".

  3. Ingrese un nombre para la ruta remota.

  4. Ingrese la URL / ruta para el repositorio remoto

  5. Ingrese el nombre de usuario para el servicio de alojamiento para el repositorio remoto.

  6. Haga clic en 'Aceptar' para agregar la ruta remota.

  7. De vuelta en la ventana Configuración del repositorio, haga clic en 'Aceptar'. La nueva ruta remota debe agregarse ahora en el repositorio.

  8. Si necesita editar una ruta remota ya agregada, simplemente haga clic en el botón 'Editar'. Debería ser dirigido a la ventana "Detalles remotos" donde puede editar los detalles (URL / Ruta / Tipo de host) de la ruta remota.

  9. Para eliminar una ruta de repositorio remoto, haga clic en el botón 'Eliminar'

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

árbitro. Apoyo

Przemek Struciński
fuente
11

Cambie el URI de git remoto a en [email protected]lugar dehttps://github.com

git remote set-url origin [email protected]:<username>/<repo>.git

Ejemplo:

git remote set-url origin [email protected]:Chetabahana/my_repo_name.git

El beneficio es que puede hacerlo git pushautomáticamente cuando usa ssh-agent :

#!/bin/bash

# Check ssh connection
ssh-add -l &>/dev/null
[[ "$?" == 2 ]] && eval `ssh-agent`
ssh-add -l &>/dev/null
[[ "$?" == 1 ]] && expect $HOME/.ssh/agent

# Send git commands to push
git add . && git commit -m "your commit" && git push -u origin master

Ponga un archivo de secuencia de comandos $HOME/.ssh/agentpara que se ejecute ssh-addutilizando esperar como se muestra a continuación:

#!/usr/bin/expect -f
set HOME $env(HOME)
spawn ssh-add $HOME/.ssh/id_rsa
expect "Enter passphrase for $HOME/.ssh/id_rsa:"
send "<my_passphrase>\n";
expect "Identity added: $HOME/.ssh/id_rsa ($HOME/.ssh/id_rsa)"
interact
Chetabahana
fuente
10

En Git Bash, ingrese el comando:

git remote set-url origin https://NewRepoLink.git

Ingrese las credenciales

Hecho

devDeejay
fuente
10

Yo trabajé:

git remote set-url origin <project>
Diego Santa Cruz Mendezú
fuente
9
$ git remote rm origin
$ git remote add origin [email protected]:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master
Zahid Hassan Shaikot
fuente
8
Al agregar una respuesta a una pregunta de diez años con otras veintiuna respuestas, es realmente importante incluir una explicación de su respuesta y señalar qué nuevo aspecto de la pregunta aborda su respuesta. Con respuestas que son una serie de comandos, es útil explicar qué está haciendo cada uno y cómo deshacer los efectos de cada uno de ellos si es posible. Deshacer es importante en caso de que alguien pueda realizar los primeros pasos, pero luego encuentre un error en un paso posterior.
Jason Aller
@JasonAller Creo que esto se explica por sí mismo y es la mejor respuesta aquí, con mucho, los otros son una broma.
Oliver Dixon
7

Si está utilizando TortoiseGit, siga los pasos a continuación:

  1. Vaya a su carpeta de pago local y haga clic derecho para ir a TortoiseGit -> Settings
  2. En el panel izquierdo, elija Git -> Remote
  3. En el panel derecho, elija origin
  4. Ahora cambie el URLvalor del cuadro de texto a donde sea que esté su nuevo repositorio remoto

Su sucursal y todas sus confirmaciones locales permanecerán intactas y puede seguir trabajando como antes.

Vipul bhojwani
fuente
3

Para cambiar el flujo ascendente remoto: git remote set-url origin <url>


A agregar más upstreams: git remote add newplace <url>

Para que pueda elegir dónde trabajar git push origin <branch>ogit push newplace <branch>

Anderson Cossul
fuente
1
No pude encontrar otras menciones de trabajar en múltiples aguas arriba ...
Anderson Cossul
2

Puede cambiar la url editando el archivo de configuración. Vaya a la raíz de su proyecto:

nano .git/config

Luego edite el campo url y configure su nueva url. Guarda los cambios. Puede verificar los cambios utilizando el comando.

git remote -v 
Abhi Das
fuente
1

Para aquellos que quieran hacer este cambio desde Visual Studio 2019

Abra Team Explorer (Ctrl + M)

Inicio -> Configuración

Git -> Configuración del repositorio

Mandos a distancia -> Editar

ingrese la descripción de la imagen aquí

Dinch
fuente
1

Si su repositorio es privado, entonces

  1. Abra el Panel de control desde el menú Inicio
  2. Seleccionar cuentas de usuario
  3. Seleccione "Administrar sus credenciales" en el menú de la izquierda
  4. Elimine las credenciales relacionadas con Git o GitHub

Referencia

Mike Lee
fuente
1

verifica tu privilegio

en mi caso necesito verificar mi nombre de usuario

Tengo dos o tres repositorios con credenciales separadas.

el problema es mi permiso tengo dos servidores privados de git y repositorios

esta segunda cuenta es administrador de ese nuevo repositorio y la primera es mi cuenta de usuario predeterminada y debería otorgar permiso a la primera

sable tabatabaee yazdi
fuente
0

Eliminar un control remoto

Use el comando git remote rm para eliminar una URL remota de su repositorio.

    $ git remote -v
    # View current remotes
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
    > destination  https://github.com/FORKER/REPOSITORY.git (fetch)
    > destination  https://github.com/FORKER/REPOSITORY.git (push)

    $ git remote rm destination
    # Remove remote
    $ git remote -v
    # Verify it's gone
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
Tayyab Roy
fuente