Github "fatale: l'origine remota esiste già"


466

Sto cercando di seguire il tutorial di Michael Hartl's Rails ma ho riscontrato un errore.

Mi sono registrato su Github e ho rilasciato una nuova chiave SSH e creato un nuovo repository. Ma quando inserisco la riga successiva nel terminale ricevo il seguente errore:

Parkers-MacBook-Pro:.ssh ppreyer$ git remote add origin git@github.com:ppreyer/first_app.git
fatal: remote origin already exists.

Ti sei solo chiesto se qualcun altro ha riscontrato questo problema?


Se hai ancora creato il repository git, guarda il .git/configfile per vedere se l'origine non è stata ancora dichiarata.
Denys Séguret,

3
Stavo affrontando lo stesso problema e ho usato il comando "git remote rm origin", quindi ho usato il comando git remote add URL di origine.
Akhzar Nazir il

@AkhzarNazir per favore aggiungi questo come risposta. Ha funzionato per me.
Pamela Sillah,

Risposte:


896

TL; DR dovresti semplicemente aggiornare il telecomando esistente:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

Versione lunga:

Come indica il messaggio di errore, esiste già un telecomando configurato con lo stesso nome. Quindi puoi aggiungere il nuovo telecomando con un nome diverso o aggiornare quello esistente se non ti serve:

Per aggiungere un nuovo telecomando, chiamato ad esempio githubinvece di origin(che ovviamente esiste già nel tuo sistema), procedi come segue:

$ git remote add github git@github.com:ppreyer/first_app.git

Ricorda però che ovunque nel tutorial vedi "origin" dovresti sostituirlo con "github" . Ad esempio $ git push origin masterora dovrebbe essere $ git push github master.

Tuttavia, se vuoi vedere cos'è ciò originche già esiste, puoi fare un $ git remote -v. Se pensi che ci sia un errore, puoi aggiornarlo in questo modo:

$ git remote set-url origin git@github.com:ppreyer/first_app.git

5
Perché l'origine dovrebbe esistere nel suo nuovo repository? Dovrebbe risolvere il problema (assicurandosi ad esempio che l'origine sia l'alias corretto per github) invece di creare un nuovo alias che avrebbe dovuto ricordare.
Denys Séguret,

1
Ok, ha funzionato, ma quando vado al passaggio successivo e inserisco git push -u origin master nel terminale ottengo il seguente errore: ERRORE: Repository non trovato. fatale: l'estremità remota ha riattaccato inaspettatamente Cosa significa?
ppreyer,

Che cosa significa git remote -voutput? Inoltre, puoi provare git push origin master?
Agis,

16
git remote rm originnon ha funzionato del tutto. Ha prodotto l' errore: Impossibile rimuovere la sezione di configurazione 'remote.origin'
Andrew Savinykh,

20
@zespri: usegit remote set-url --add origin git@github.com/username/repo.git
eduncan911,

342

In breve,

git remote rm origin
git remote add origin git@github.com:username/myapp.git

Lavorato !

Saluti!


qualcuno può spiegare questo? git remote rm origin
Kick Buttowski,

1
@KickButtowski rm è in riferimento al comando di rimozione usato in * nix. Quindi questo comando dice a git di "rimuovere" i dettagli del server remoto chiamati "origine".
rapina il

Non è necessario farlo in 2 passaggi quando è possibile farlo in 1. Vedere la mia risposta.
Agis,

37

Per quelli di voi che si imbattono nell'errore sempre così comune "fatale: l'origine remota esiste già", o quando si tenta di rimuovere l'origine e si ottiene "errore: impossibile rimuovere la sezione di configurazione remote.origin", ciò che è necessario fare è impostare l'origine manualmente.

POSH di Windows ~ Git per Windows PowerShell (e l'app GitHub per Windows) ha un problema con questo.

Mi sono imbattuto in questo, come faccio spesso, di nuovo durante l'impostazione del mio octopress. Quindi, ecco come l'ho fatto funzionare.

Innanzitutto, controlla i telecomandi:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin

Noterai innanzitutto che la mia origine non ha url. Qualsiasi tentativo di rimuoverlo, rinominarlo, ecc., Tutto fallisce.

Quindi, modifica manualmente l'URL:

git remote set-url --add origin https://github.com/eduncan911/eduncan911.github.io.git

Quindi puoi confermare che ha funzionato eseguendo di git remote -vnuovo:

C:\gd\code\octopress [source +2 ~3 -0 !]> git remote -v
octopress       https://github.com/imathis/octopress.git (fetch)
octopress       https://github.com/imathis/octopress.git (push)
origin  https://github.com/eduncan911/eduncan911.github.io.git (fetch)
origin  https://github.com/eduncan911/eduncan911.github.io.git (push)

Questo ha risolto dozzine di repository git con cui ho avuto problemi, GitHub, BitBucket GitLab, ecc.


2
Questo ha funzionato per me. Grazie @ eduncan911. Le istruzioni di github dichiarano di fare un "git init" per creare un nuovo repository sulla riga di comando. Questo crea un telecomando di origine senza URL usando quell'interfaccia PS.
mikekidder,

Ah yah, questo è un altro gotcha e perché devi farlo. +1 Forse dovremmo segnalarlo a POSH Git su github.
eduncan911,

Come trovo l'URL quando utilizzo Gitlab?
Madmenyo,

1
@MennoGouw Penso che sia una domanda fuori tema; ma, di solito, è nella dashboard / home di Repo. È anche nelle impostazioni per il progetto.
eduncan911,

36

Puoi vedere a quali repository remoti sei configurato per connetterti tramite

git remote -v

Ciò restituirà un elenco in questo formato:

origin  git@github.com:github/git-reference.git (fetch)
origin  git@github.com:github/git-reference.git (push)

Ciò potrebbe aiutarti a capire a cosa puntava l'origine originale.

Se vuoi mantenere la connessione remota che vedi con -v, ma vuoi comunque seguire il tutorial di Rails senza dover ricordare 'github' (o qualche altro nome) per il repository del tuo tutorial, puoi rinominare l' altro tuo repository con il comando:

git remote rename [current name] [new name]

come in:

git remote rename origin oldrepo

Dovresti quindi essere in grado di riprendere il tuo tutorial.


35

Prima fai un:

git remote rm origin

poi

git remote add origin https://github.com/your_user/your_app.git

e voilà! Ha funzionato per me!


Perché rimuovere l'origine? Esiste un modo per aggiungere qualcosa anziché l'origine?
Abhils,

28

Nel caso speciale in cui si sta creando un nuovo repository a partire da un vecchio repository che è stato utilizzato come modello (non farlo se non è il caso). Cancella completamente i file git del vecchio repository in modo da poterne avviare uno nuovo:

rm -rf .git

E quindi riavviare un nuovo repository git come al solito:

git init
git add whatever.wvr ("git add --all" if you want to add all files)
git commit -m "first commit"
git remote add origin git@github.com:ppreyer/first_app.git
git push -u origin master

13

Se è necessario verificare quali repository remoti sono stati collegati ai repository locali, esiste un cmd:

git remote -v

Ora se vuoi rimuovere il repository remoto (diciamo, origine), allora quello che puoi fare è:

git remote rm origin

Sembra più un commento che una risposta. Con un po 'più di rappresentante, sarai in grado di pubblicare commenti .
Nathan Tuggy,

@NathanTuggy No, è una risposta completa e, a mio modesto parere, più diretta di quella più popolare su questo thread.
daOnlyBG,

@daOnlyBG: Non sono sicuro di come fosse la risposta quando l'ho vista, dal momento che era prima dei commenti bloccati nei periodi di grazia (e quindi potrebbe essere stato modificato in silenzio). Ma ora, è ragionevolmente completo, sono d'accordo.
Nathan Tuggy,

@NathanTuggy Woah, una volta non sapevo che c'erano modifiche silenziose. Questo spiega.
daOnlyBG

7

Questo messaggio di errore indica che hai già un telecomando nella tua directory git. Se sei soddisfatto di quel telecomando, puoi spingere il tuo codice. Altrimenti o se non puoi spingere semplicemente:

git remote remove origin
git remote add origin git@github.com:ppreyer/first_app.git

Ecco !


7

Il concetto di remoteè semplicemente l'URL del tuo repository remoto.

Il originè un alias che punta a quel URL. Quindi, invece di scrivere l'intero URL ogni volta che vogliamo inviare qualcosa al nostro repository, utilizziamo semplicemente questo alias ed eseguiamo:

git push -u origin master

Dire di passare al pushnostro codice dal nostro ramo master locale al repository di origine remoto .

Ogni volta che cloniamo un repository , git crea questo alias per impostazione predefinita. Inoltre, ogni volta che creiamo un nuovo repository , lo creiamo solo noi stessi.

In ogni caso, possiamo sempre cambiare questo nome in qualsiasi cosa ci piaccia, eseguendo questo:

git remote rename [current-name] [new-name]

Poiché è memorizzato sul lato client dell'applicazione git (sulla nostra macchina), la modifica non influirà su nulla nel nostro processo di sviluppo, né sul nostro repository remoto. Ricorda, è solo un nome che punta a un indirizzo .

L'unica cosa che cambia qui rinominando l'alias è che dobbiamo dichiarare questo nuovo nome ogni volta che inviamo qualcosa al nostro repository.

git push -u my-remote-alias master

Ovviamente un singolo nome non può indicare due indirizzi diversi. Ecco perché ricevi questo messaggio di errore. Esiste già un alias chiamato originnel tuo computer locale. Per vedere quanti alias hai e quali sono, puoi avviare questo comando:

git remote -v

Questo ti mostrerà tutti gli alias che hai più gli URL corrispondenti.

Puoi rimuoverli anche se ti piace eseguire questo:

git remote rm my-remote-alias

Quindi in breve:

  • scopri cosa hai già,
  • rimuoverli o rinominarli,
  • aggiungi i tuoi nuovi alias.

Buona codifica.


5

se aggiungi già un progetto per un altro archivio, come quando carichi su github e poi lo carichi su bitbucket, questo mostra questo tipo di errore.

Come eliminare l'errore: eliminare il file git-hub nel progetto e quindi ripetere i seguenti passaggi ...

git init       
git remote add origin git@bitbucket.org:Yourname/firstdemotry.git  
git add -A  
git commit -m 'Message'  
git push -u origin master  

5

Può succedere anche se si esegue il comando nella directory senza git inizializzato. In tal caso, esegui prima:

git init

4

per usare git devi essere

radice

in caso contrario, utilizzare sudo

per rimuovere l'origine:

git rimuovere l'origine remota

per aggiungere l'origine:

git remote aggiungi origine http: // giturl


3
  • $ git remote add origin git@gitlab.com:abc/backend/abc.git

    In questo comando l'origine non fa parte del comando, è solo il nome del repository remoto. Puoi usare qualsiasi nome tu voglia.

    • Per prima cosa puoi controllare che cosa contiene usando il comando qui sotto

    $ git remote -v

    Ti darà risultati come questo origin git@gitlab.com:abc/backend/abc.git (fetch) origin git@gitlab.com:abc/backend/abc.git (push) origin1 git@gitlab.com:abc/backend/abc.git (fetch) origin1 git@gitlab.com:abc/backend/abc.git (push)

    se contiene il percorso del repository remoto, puoi spingerlo direttamente senza aggiungere nuovamente l'origine

    • Se non sta seguendo il percorso del repository remoto

    Quindi puoi aggiungere una nuova origine con un nome diverso e usarlo per spingere come $ git remote add origin101 git@gitlab.com:abc/backend/abc.git

    Oppure puoi rinominare il nome di origine esistente e aggiungere la tua origine

    git remote rename origin destination

    spara di nuovo sotto comando

    $ git remote -v

    destination git@gitlab.com:abc/backend/abc.git (fetch) destination git@gitlab.com:abc/backend/abc.git (push)

    Cambierà il nome del repository esistente in modo da poter utilizzare quel nome di origine

    Oppure puoi semplicemente rimuovere l'origine esistente e aggiungere l'origine

    git remote rm destination


3

Prova questo

  • cdisting_repo esistente
  • git rinomina remota origine old-origin

Grazie fratello, questa è l'unica cosa che ha funzionato per me.
Akshat Tamrakar il

2

fronteggiare lo stesso errore mentre aggiungi repository a git hun usando git bash su windows

 git remote add origin https://github.com/axaysushir/netflix_page_clone.git

fatale: l'origine remota esiste già.

fatal: remote origin already exists.

 ! [rejected]        master -> master (fetch first)

errore: impossibile inviare alcuni riferimenti a " https://github.com/axaysushir/meditation_app_using_js.git "

Aggiorna il repository seguendo il comando

$ git remote set-url origin https://github.com/axaysushir/netflix_page_clone.git

quindi aggiungi repository usando git remote add github invece git remote add origin

$ git remote add github https://github.com/axaysushir/netflix_page_clone.git

E poi scrivi il seguente comando invece di git push origin master questo caricherà il tuo repository su github

$ git push github master

2

aggiorna l'origine se esiste già utilizzando questo comando

git remote set-url origin https://github.com/SriramUmapathy/ReduxLearning.git

0

Primo controllo Per vedere quanti alias hai e quali sono, puoi avviare questo comando git remote -v

Quindi vedi in quale repository ti trovi, quindi prova git remote set-url --add [Quindi il tuo repositpory link] git push -u origin master


0

Almeno su bash, possiamo forzare il valore di ritorno del codice di uscita del comando su 0

È possibile rimuovere il vecchio telecomando e aggiungerlo di nuovo

git remote remove $1 || true
git remote add $1 $2

0

Nel caso in cui tu voglia fare tramite la GUI, procedi come segue:

  1. Assicurati che i "file nascosti" siano visibili nella cartella del tuo progetto
  2. Vai alla directory .git
  3. Modifica il file url nel file config.txt e salva il file!
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.