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 git@github.com:ppreyer/first_app.git
fatal: remote origin already exists.

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


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 git@github.com: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 git@github.com: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 git@github.com:ppreyer/first_app.git

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 git@github.com/username/repo.git
eduncan911

342

En bref,

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

Travaillé !

À votre santé!


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.


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  git@github.com:github/git-reference.git (fetch)
origin  git@github.com: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.


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!


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 git@github.com:ppreyer/first_app.git
git push -u origin master

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

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 git@github.com:ppreyer/first_app.git

Voilà!


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.


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 git@bitbucket.org:Yourname/firstdemotry.git  
git add -A  
git commit -m 'Message'  
git push -u origin master  

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

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


3
  • $ git remote add origin git@gitlab.com: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 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)

    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 git@gitlab.com: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 git@gitlab.com:abc/backend/abc.git (fetch) destination git@gitlab.com: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


3

Essaye ça

  • cd existing_repo
  • git remote renommer origine ancienne origine

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

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

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


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

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!
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.