Come modificare l'URI (URL) per un repository Git remoto?


3897

Ho un repository (origine) su una chiave USB che ho clonato sul mio disco rigido (locale). Ho spostato "origine" su un NAS e ho testato con successo la clonazione da qui.

Vorrei sapere se posso cambiare l'URI di "origine" nelle impostazioni di "locale" in modo che ora venga estratto dal NAS e non dalla chiave USB.

Per ora, posso vedere due soluzioni:

  • spingere tutto sull'USB-ORIGN e copiarlo di nuovo sul NAS (implica un sacco di lavoro a causa di nuovi commit in origine nas);

  • aggiungi un nuovo telecomando a "local" ed elimina quello vecchio (temo che spezzerò la mia storia).


6
Ho dovuto farlo su una vecchia versione di git (1.5.6.5) e l'opzione set-url non esisteva. La semplice eliminazione del telecomando indesiderato e l'aggiunta di uno nuovo con lo stesso nome ha funzionato senza problemi e ha mantenuto la cronologia bene.
HotN,

nel mio caso ho bisogno di verificare la mia autorizzazione, ho due repository git privati ​​e questo secondo account è l'amministratore di quel nuovo repository e il primo è il mio account utente predefinito e dovrei concedere l'autorizzazione al primo
sabre tabatabaee yazdi

Risposte:


6336

Puoi

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

(vedi git help remote) oppure puoi semplicemente modificare .git/confige cambiare gli URL lì. Non corri il rischio di perdere la storia se non fai qualcosa di molto sciocco (e se sei preoccupato, fai una copia del tuo repository, poiché il tuo repository è la tua storia).


29
Se hai un altro utente shell allora forse vuoi specificare il tuo utente git all'inizio del nuovo url, ad es .:myself@git://new.url.here
sobi3ch

13
Si consiglia inoltre di impostare il ramo di monte master per la nuova posizione di origine con: git branch -u origin/master. Questo ti permetterà di farlo git pushinvece di doverlo fare git push origin masterogni volta.
Kelorek,

32
@kelorek o puoi solo git push -u origin masterla prima volta :)
hobbs

26
Ho anche dovuto per git remote set-url --push origin git://...impostare l'origine ... (push) url.
jpillora,

3
Per più rami, puoi utilizzare git push -u --allper inviare tutti i rami contemporaneamente al nuovo URL (anziché 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)

Modifica dell'URL di un telecomando


101

Cambia host per un server Git Origin

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

Spero che questo non sia qualcosa che devi fare. Il server che ho usato per collaborare ad alcuni progetti git con il nome di dominio è scaduto. Ciò significava trovare un modo per migrare i repository locali per tornare in sincronia.

Aggiornamento: grazie a @mawolf per aver sottolineato che c'è un modo semplice con le recenti versioni di git (post febbraio 2010):

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

Vedi la pagina man per i dettagli.

Se hai una versione precedente, prova questo:

Come avvertimento, funziona solo perché è lo stesso server, solo con nomi diversi.

Supponendo che il nuovo nome host sia newhost.com, e quello precedente lo fosse oldhost.com, il cambiamento è abbastanza semplice.

Modifica il .git/configfile nella tua directory di lavoro. Dovresti vedere qualcosa del tipo:

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

Passa oldhost.coma newhost.com, salva il file e il gioco è fatto.

Dal mio test limitato ( git pull origin; git push origin; gitx) tutto sembra in ordine. E sì, so che è una cattiva forma fare casino con gli interni di Git.


Forma cattiva? Forse. Ma se hai bisogno di fare qualcosa che gli autori non si aspettavano che qualcuno avrebbe mai dovuto fare, a volte è necessario fare confusione con gli interni. Ma devi essere disposto ad accettare le conseguenze se sbagli. Backup your local repository _before_ messing with git internals.
Jesse Chisholm,

56
git remote set-url origin git://new.location

(in alternativa, apri .git/config, cerca [remote "origin"]e modifica la url =riga.

Puoi verificarlo funzionando esaminando i telecomandi:

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

La prossima volta che spingi, dovrai specificare il nuovo ramo a monte, ad esempio:

git push -u origin master

Vedi anche: GitHub: modifica dell'URL di un telecomando


Non è stato possibile impostare la nuova origine modificando .git / config. Ha detto che il repository git chiamato nell'URL non era un repository git. Una volta rimosso e ricreato l'origine, tutto andava bene. Tuttavia, non avevo cercato git remote set-url come soluzione al mio problema.
octopusgrabbus,

+1 per fornire una risposta completa con il git push -ucomando. Forse ovvio per gli altri, non era per me.
testphreak,

37

Cambio di URL remoti

Terminale aperto.

Ist Step: - Cambia l'attuale directory di lavoro nel tuo progetto locale.

2 ° passaggio: - Elenca i telecomandi esistenti per ottenere il nome del telecomando che desideri modificare.

git remote -v

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

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

Cambia l'URL del tuo telecomando da HTTPS a SSH con il comando git remote set-url.

3 ° passo: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

4 ° passaggio: - Ora verificare che l'URL remoto sia stato modificato.

git remote -v Verifica il nuovo URL remoto

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

Devi rimuovere la vecchia origine prima di aggiungere la nuova origine?
Slitta,

Non ho rimosso dal progetto nulla. Faccio semplicemente i passaggi precedenti e ha funzionato
VIKAS KOHLI il

27
  1. rimuovere origin usando il comando su gitbash git remote rm origin
  2. E ora aggiungi nuovo Origin usando gitbash git remote add add origin (Copia l'URL HTTP dal tuo repository di progetti nel bit bucket) fatto

Questa è una risposta davvero utile perché senza git remote rm origingit ricorda i dettagli sulla vecchia origine.
mato,

Quanto sopra git remote rm originrisolve il problema di più telecomandi: problema in cui non ero in grado di impostare l'URL remoto. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
data del

21

git remote set-url {nome} {url}

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


19

Scrivi il comando seguente dal tuo terminale repository:

git remote set-url origin git@github.com:<username>/<repo>.git

Fare riferimento a questo collegamento per ulteriori dettagli sulla modifica dell'URL nel telecomando.


1
il link è stato utile
ANP

16

se hai clonato il tuo locale consisterà automaticamente,

URL remoto in cui viene clonato.

puoi controllarlo usando git remote -v

se vuoi apportare modifiche,

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

Qui,

origine - il tuo ramo

se vuoi sovrascrivere un ramo esistente puoi ancora usarlo .. sovrascriverà il tuo esistente ... lo farà,

git remote remove url
and 
git remote add origin url

per te...


Avevo aggiunto più telecomandi, quindi git remote rm originera necessario il comando per rimuovere tutti gli URL associati. Quindi il comando Aggiungi ha funzionato.
data del

14

Per verificare la connessione remota git:

git remote -v

Ora, imposta il repository locale su git remoto:

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

Ora per renderlo a monte o spingere usa il seguente codice:

git push --set-upstream origin master -f


1
Stavo spingendo e tuttavia Github non ha mostrato il mio nuovo ramo. Quest'ultimo l'ha --set-upstreamfatto funzionare.
OoDeLally,

12

Hai molti modi per farlo:

consolle

git remote set-url origin [Here new url] 

Assicurati solo di averlo aperto in un posto in cui si trova un repository.

config

È inserito in .git / config (stessa cartella del repository)

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

TortoiseGit

Passaggio 1: apri le impostazioni

Passaggio 2: modifica dell'URL

Quindi basta modificare l'URL.

SourceTree

  1. Fare clic sul pulsante "Impostazioni" sulla barra degli strumenti per aprire la finestra Impostazioni repository.

  2. Fare clic su "Aggiungi" per aggiungere un percorso di repository remoto al repository. Si aprirà una finestra "Dettagli remoti".

  3. Immettere un nome per il percorso remoto.

  4. Immettere l'URL / il percorso per il repository remoto

  5. Immettere il nome utente per il servizio di hosting per il repository remoto.

  6. Fai clic su "OK" per aggiungere il percorso remoto.

  7. Tornare alla finestra Impostazioni repository, fare clic su "OK". Il nuovo percorso remoto dovrebbe essere aggiunto sul repository ora.

  8. Se devi modificare un percorso remoto già aggiunto, fai clic sul pulsante "Modifica". Dovresti essere indirizzato alla finestra "Dettagli remoti" dove puoi modificare i dettagli (URL / Percorso / Tipo host) del percorso remoto.

  9. Per rimuovere un percorso di repository remoto, fare clic sul pulsante "Rimuovi"

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

rif. Supporto


11

Modifica l'URI di git remoto in git@github.comanziché anzichéhttps://github.com

git remote set-url origin git@github.com:<username>/<repo>.git

Esempio:

git remote set-url origin git@github.com:Chetabahana/my_repo_name.git

Il vantaggio è che puoi fare git pushautomaticamente quando usi 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

Metti un file di script $HOME/.ssh/agentper lasciarlo funzionare ssh-addusando prevede come di seguito:

#!/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

10

In Git Bash, inserisci il comando:

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

Inserisci le credenziali

Fatto



9
$ git remote rm origin
$ git remote add origin git@github.com:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master

8
Quando aggiungi una risposta a una domanda di dieci anni con altre ventuno risposte, è davvero importante includere una spiegazione della tua risposta e sottolineare quale nuovo aspetto della domanda affronta la tua risposta. Con le risposte che sono una serie di comandi è utile spiegare cosa sta facendo ciascuno e come annullare gli effetti di ciascuno di essi, se possibile. L'annullamento è importante nel caso in cui qualcuno sia in grado di eseguire i primi passaggi, ma poi riscontri un errore in un passaggio successivo.
Jason Aller il

@JasonAller Penso che questo sia abbastanza autoesplicativo ed è la migliore risposta qui di gran lunga, gli altri sono uno scherzo.
Oliver Dixon,

7

Se stai usando TortoiseGit, procedi nel seguente modo:

  1. Vai alla cartella del checkout locale e fai clic con il tasto destro per andare a TortoiseGit -> Settings
  2. Nel riquadro sinistro selezionare Git -> Remote
  3. Nel riquadro destro selezionare origin
  4. Ora modifica il URLvalore della casella di testo nel punto in cui si trova il tuo nuovo repository remoto

La tua filiale e tutti i tuoi impegni locali rimarranno intatti e potrai continuare a lavorare come prima.



3

Per modificare l'upstream remoto: git remote set-url origin <url>


Per aggiungere più flussi verso l'alto: git remote add newplace <url>

Quindi puoi scegliere dove lavorare git push origin <branch>ogit push newplace <branch>


1
Non sono riuscito a trovare altre menzioni di lavorare in più
flussi di corrente

2

È possibile modificare l'URL modificando il file di configurazione. Vai alla radice del tuo progetto:

nano .git/config

Quindi modifica il campo URL e imposta il tuo nuovo URL. Salva le modifiche. È possibile verificare le modifiche utilizzando il comando.

git remote -v 

1

Per coloro che vogliono apportare questa modifica da Visual Studio 2019

Apri Team Explorer (Ctrl + M)

Home -> Impostazioni

Git -> Impostazioni repository

Telecomandi -> Modifica

inserisci qui la descrizione dell'immagine


1

Se il tuo repository è privato, allora

  1. Apri il Pannello di controllo dal menu Start
  2. Seleziona Account utente
  3. Seleziona "Gestisci le tue credenziali" nel menu a sinistra
  4. Elimina tutte le credenziali relative a Git o GitHub

Riferimento


1

controlla il tuo privilegio

nel mio caso devo controllare il mio nome utente

ho due o tre repository con credenziali separate.

il problema è il mio permesso Ho due server e repository privati ​​git

questo secondo account è l'amministratore di quel nuovo repository e il primo è il mio account utente predefinito e dovrei concedere prima l'autorizzazione


0

Rimozione di un telecomando

Utilizzare il comando git remote rm per rimuovere un URL remoto dal repository.

    $ 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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.