Github «fatal: l'origine éloignée existe déjà»

466

J'essaie de suivre le didacticiel Rails de Michael Hartl, mais j'ai rencontré une erreur.

Je me suis inscrit sur Github et j'ai émis une nouvelle clé SSH et créé un nouveau référentiel. Mais lorsque j'entre la ligne suivante dans le terminal, j'obtiens l'erreur suivante:

Parkers-MacBook-Pro:.ssh ppreyer$ git remote add origin [email protected]:ppreyer/first_app.git
fatal: remote origin already exists.

Vous vous demandez simplement si quelqu'un d'autre a rencontré ce problème?

ppreyer
la source
Si vous avez déjà créé le référentiel git, regardez le .git/configfichier pour voir si l'origine n'est pas encore déclarée.
Denys Séguret
3
J'étais confronté au même problème et j'ai utilisé la commande "git remote rm origin", puis utilisez la commande git remote add origin URL.
Akhzar Nazir
@AkhzarNazir veuillez ajouter ceci comme réponse. Ça a marché pour moi.
Pamela Sillah

Réponses:

896

TL; DR, vous devez simplement mettre à jour la télécommande existante:

$ git remote set-url origin [email protected]:ppreyer/first_app.git

Version longue:

Comme l'indique le message d'erreur, il existe déjà une télécommande configurée avec le même nom. Vous pouvez donc soit ajouter la nouvelle télécommande avec un nom différent, soit mettre à jour l'existant si vous n'en avez pas besoin:

Pour ajouter une nouvelle télécommande, appelée par exemple à la githubplace de origin(qui existe évidemment déjà dans votre système), procédez comme suit:

$ git remote add github [email protected]:ppreyer/first_app.git

N'oubliez pas que, partout dans le tutoriel, vous voyez "origine", vous devez le remplacer par "github" . Par exemple $ git push origin masterdevrait maintenant l'être $ git push github master.

Cependant, si vous voulez voir ce qu'est ce originqui existe déjà, vous pouvez le faire $ git remote -v. Si vous pensez que c'est là par une erreur, vous pouvez le mettre à jour comme ceci:

$ git remote set-url origin [email protected]:ppreyer/first_app.git
Agis
la source
5
Pourquoi l'origine existerait-elle dans son nouveau référentiel? Il devrait résoudre le problème (en s'assurant par exemple que l'origine est l'alias correct pour github) au lieu de créer un nouvel alias qu'il devrait rappeler.
Denys Séguret
1
Ok, cela a fonctionné, mais lorsque je passe à l'étape suivante et que je saisis git push -u origin master dans le terminal, j'obtiens l'erreur suivante: ERREUR: référentiel introuvable. fatal: l'extrémité distante a raccroché de façon inattendue Qu'est-ce que cela signifie?
ppreyer
Que signifie les git remote -vsorties? Pouvez-vous également essayer git push origin master?
Agis
16
git remote rm originn'a pas tout à fait fonctionné. Cela a produit une erreur: impossible de supprimer la section de configuration 'remote.origin'
Andrew Savinykh
20
@zespri: usegit remote set-url --add origin [email protected]/username/repo.git
eduncan911
342

En bref,

git remote rm origin
git remote add origin [email protected]:username/myapp.git

Travaillé !

À votre santé!

Manish Shrivastava
la source
quelqu'un peut-il expliquer cela? git remote rm origin
Kick Buttowski
1
@KickButtowski rm fait référence à la commande remove utilisée dans * nix. Cette commande demande donc à git de "supprimer" les détails du serveur distant nommés "origine".
voler le
Pas besoin de le faire en 2 étapes quand vous pouvez le faire en 1. Voir ma réponse.
Agis
37

Pour ceux d'entre vous qui rencontrent l'erreur toujours aussi courante "fatal: l'origine distante existe déjà.", Ou lorsque vous essayez de supprimer l'origine et que vous obtenez "erreur: impossible de supprimer la section de configuration remote.origin", ce que vous devez faire est de définir l'origine manuellement.

POSH ~ Git pour Windows PowerShell de Windows (et l'application GitHub pour Windows) a un problème avec cela.

Je suis tombé sur cela, comme je le fais souvent, à nouveau lors de la configuration de mon octopress. Alors, voici comment je l'ai fait fonctionner.

Tout d'abord, vérifiez vos télécommandes:

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

Vous remarquerez d'abord que mon origine n'a pas d'URL. Toute tentative de suppression, de renommage, etc. échoue.

Donc, changez l'url manuellement:

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

Ensuite, vous pouvez confirmer que cela a fonctionné en exécutant à git remote -vnouveau:

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)

Cela a corrigé des dizaines de dépôts git avec lesquels j'ai eu des problèmes, GitHub, BitBucket GitLab, etc.

eduncan911
la source
2
Cela a fonctionné pour moi. Merci @ eduncan911. Les instructions github indiquent de faire un "git init" pour créer un nouveau référentiel sur la ligne de commande. Cela crée une télécommande d'origine sans URL utilisant cette interface PS.
mikekidder
Ah ouais, c'est un autre problème et pourquoi vous devez le faire. +1 Peut-être que nous devrions signaler cela à POSH Git sur github.
eduncan911
Comment trouver l'URL lorsque j'utilise gitlab?
Madmenyo
1
@MennoGouw Je pense que c'est une question hors sujet; mais, généralement, c'est sur le tableau de bord / home du Repo. C'est également dans les paramètres du projet.
eduncan911
36

Vous pouvez voir à quels référentiels distants vous êtes configuré pour vous connecter via

git remote -v

Cela renverra une liste dans ce format:

origin  [email protected]:github/git-reference.git (fetch)
origin  [email protected]:github/git-reference.git (push)

Cela pourrait vous aider à comprendre ce que l '«origine» d'origine indiquait.

Si vous souhaitez conserver la connexion distante que vous voyez avec le -v, mais que vous souhaitez toujours suivre le didacticiel Rails sans avoir à vous souvenir de 'github' (ou d'un autre nom) pour le dépôt de votre didacticiel, vous pouvez renommer votre référentiel autre référentiel avec le commander:

git remote rename [current name] [new name]

un péché:

git remote rename origin oldrepo

Vous devriez alors pouvoir reprendre votre tutoriel.

Mark Semsel
la source
35

Faites d'abord un:

git remote rm origin

puis

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

et le tour est joué! A travaillé pour moi!

Obed Castillo
la source
Pourquoi supprimer l'origine? Existe-t-il un moyen d'ajouter quelque chose au lieu de l'origine?
Abhils
28

Dans le cas particulier où vous créez un nouveau référentiel à partir d'un ancien référentiel que vous avez utilisé comme modèle (ne faites pas cela si ce n'est pas votre cas). Effacez complètement les fichiers git de l'ancien dépôt pour pouvoir en démarrer un nouveau:

rm -rf .git

Et puis redémarrez un nouveau dépôt git comme d'habitude:

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 [email protected]:ppreyer/first_app.git
git push -u origin master
Wilmer E. Henao
la source
13

Si vous devez vérifier les dépôts distants que vous avez connectés à vos dépôts locaux, il existe un cmd:

git remote -v

Maintenant, si vous souhaitez supprimer le référentiel distant (par exemple, l'origine), vous pouvez alors:

git remote rm origin
Samarth Shah
la source
Cela ressemble plus à un commentaire qu'à une réponse. Avec un peu plus de représentants, vous pourrez poster des commentaires .
Nathan Tuggy
@NathanTuggy Non, c'est une réponse complète, et à mon humble avis, plus directe que la plus populaire sur ce fil.
daOnlyBG
@daOnlyBG: Je ne sais pas à quoi ressemblait la réponse quand je l'ai vue, car c'était avant que les commentaires ne soient verrouillés dans les délais de grâce (et ils ont donc pu être modifiés en silence). Mais maintenant, c'est assez complet, je suis d'accord.
Nathan Tuggy
@NathanTuggy Woah, ne savait pas qu'il y avait une fois des modifications silencieuses. Cela explique.
daOnlyBG
7

Ce message d'erreur indique que vous avez déjà une télécommande dans votre répertoire git. Si vous êtes satisfait de cette télécommande, vous pouvez pousser votre code. Sinon ou si vous ne pouvez pas pousser simplement:

git remote remove origin
git remote add origin [email protected]:ppreyer/first_app.git

Voilà!

MrHanachoo
la source
7

Le concept de remoteest simplement l'URL de votre référentiel distant.

Le originest un alias pointant vers cette URL. Donc, au lieu d'écrire l'URL entière à chaque fois que nous voulons pousser quelque chose dans notre référentiel, nous utilisons simplement cet alias et exécutons:

git push -u origin master

Dire à git à pushnotre code de notre branche maître locale au référentiel d' origine distant .

Chaque fois que nous clonons un référentiel , git crée cet alias pour nous par défaut. Aussi chaque fois que nous créons un nouveau référentiel , nous le créons simplement nous-mêmes.

Quel que soit le cas, nous pouvons toujours changer ce nom en tout ce que nous aimons, en exécutant ceci:

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

Comme il est stocké du côté client de l' application git (sur notre machine), le modifier n'affectera rien dans notre processus de développement, ni dans notre référentiel distant. N'oubliez pas, ce n'est qu'un nom pointant vers une adresse .

La seule chose qui change ici en renommant l'alias, c'est que nous devons déclarer ce nouveau nom chaque fois que nous poussons quelque chose dans notre référentiel.

git push -u my-remote-alias master

Évidemment, un seul nom ne peut pas pointer vers deux adresses différentes. C'est pourquoi vous obtenez ce message d'erreur. Il existe déjà un alias nommé originsur votre ordinateur local. Pour voir combien d'alias vous avez et quels sont-ils, vous pouvez lancer cette commande:

git remote -v

Cela vous montrera tous les alias que vous avez ainsi que les URL correspondantes.

Vous pouvez également les supprimer si vous aimez exécuter ceci:

git remote rm my-remote-alias

Donc en bref:

  • découvrez ce que vous avez déjà,
  • les supprimer ou les renommer,
  • ajoutez vos nouveaux alias.

Codage heureux.

Kobayashi
la source
5

si vous ajoutez déjà un projet pour un autre stockage, comme vous téléchargez sur github puis vous téléchargez sur bitbucket, cela montre ce type d'erreur.

Comment supprimer l'erreur: supprimez le fichier git-hub dans votre projet, puis répétez les étapes suivantes ...

git init       
git remote add origin [email protected]:Yourname/firstdemotry.git  
git add -A  
git commit -m 'Message'  
git push -u origin master  
Chaudhary Prakash
la source
5

Cela peut également arriver si vous exécutez la commande dans le répertoire sans initialiser git. Si tel est le cas, exécutez en premier:

git init
Jan Pi
la source
4

pour utiliser git, vous devez être

racine

sinon, utilisez sudo

pour supprimer l'origine:

git remote remove origine

pour ajouter l'origine:

git remote add origin http: // giturl

Karan
la source
3
  • $ git remote add origin [email protected]:abc/backend/abc.git

    Dans cette commande, l'origine ne fait pas partie de la commande, c'est juste le nom de votre référentiel distant. Vous pouvez utiliser le nom de votre choix.

    • Vous pouvez d'abord vérifier que ce qu'il contient en utilisant la commande ci-dessous

    $ git remote -v

    Cela vous donnera un résultat comme celui-ci origin [email protected]:abc/backend/abc.git (fetch) origin [email protected]:abc/backend/abc.git (push) origin1 [email protected]:abc/backend/abc.git (fetch) origin1 [email protected]:abc/backend/abc.git (push)

    s'il contient votre chemin de référentiel distant, vous pouvez directement pousser vers cela sans ajouter à nouveau l'origine

    • S'il ne contient pas votre chemin de référentiel distant

    Ensuite, vous pouvez ajouter une nouvelle origine avec un nom différent et l'utiliser pour pousser comme $ git remote add origin101 [email protected]:abc/backend/abc.git

    Ou vous pouvez renommer le nom d'origine existant ajouter votre origine

    git remote rename origin destination

    tirer à nouveau sous la commande

    $ git remote -v

    destination [email protected]:abc/backend/abc.git (fetch) destination [email protected]:abc/backend/abc.git (push)

    Cela changera votre nom de dépôt existant afin que vous puissiez utiliser ce nom d'origine

    Ou vous pouvez simplement supprimer votre origine existante et ajouter votre origine

    git remote rm destination

Foram Sojitra
la source
3

Essaye ça

  • cd existing_repo
  • git remote renommer origine ancienne origine
Sreeraj VR
la source
Bro merci, c'est la seule chose qui a fonctionné pour moi.
Akshat Tamrakar
2

face à la même erreur lors de l'ajout du référentiel à git hun en utilisant git bash sur windows

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

fatal: l'origine éloignée existe déjà.

fatal: remote origin already exists.

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

erreur: échec de l'envoi de certaines références à ' https://github.com/axaysushir/meditation_app_using_js.git '

Mettre à jour le référentiel en suivant la commande

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

puis ajouter un référentiel à l'aide de git remote ajouter github à la place git remote add origin

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

Et puis écrivez la commande suivante au lieu de git push origin master, cela téléchargera votre référentiel sur github

$ git push github master
akshay_sushir
la source
2

mettre à jour l'origine si elle existe déjà en utilisant cette commande

git remote set-url origin https://github.com/SriramUmapathy/ReduxLearning.git
Sriram
la source
0

Première vérification Pour voir combien d'alias vous avez et quels sont-ils, vous pouvez lancer cette commande git remote -v

Ensuite, voyez dans quel référentiel vous vous trouvez, puis essayez git remote set-url --add [Puis votre lien de référentiel] git push -u origin master

Sarthak Dalabehera
la source
0

Sur bash au moins, nous pouvons forcer la valeur de retour du code de sortie de la commande à 0

Vous pouvez supprimer l'ancienne télécommande et l'ajouter à nouveau

git remote remove $1 || true
git remote add $1 $2
motia
la source
0

Dans le cas où vous souhaitez le faire via l'interface graphique, procédez comme suit:

  1. Assurez-vous que les "fichiers cachés" sont visibles dans votre dossier de projet
  2. Accédez au répertoire .git
  3. Modifiez le fichier url dans le fichier config.txt et enregistrez le fichier!
inspiréMichael
la source