L'origine distante existe déjà sur 'git push' vers un nouveau référentiel


548

J'ai mon projet sur GitHub à un endroit, git@github.com:myname/oldrep.git.

Maintenant , je veux pousser tout mon code à un nouveau référentiel à un autre endroit, git@github.com:newname/newrep.git.

J'ai utilisé la commande:

git remote add origin git@github.com:myname/oldrep.git

mais je reçois ceci:

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


6
Donnez la sortie de la commande $> git remote -v show
sykora


Un bon moyen consiste à utiliser "importer à partir d'un autre référentiel" au bas de votre nouveau référentiel créé, si vous connaissez l'URL de l'ancien.
JW.ZG

Une question similaire a été posée ici: stackoverflow.com/questions/2432764/…
jciloa

1
Si vous souhaitez conserver la télécommande d'origine, vous pouvez simplement utiliser un nom différent git remote add origin2 ...., mais si vous n'avez besoin de pousser qu'une seule fois sans modifier la configuration du référentiel, vous pouvez simplement le faire git push git@github.com:user/another-project.git master:master.
ccpizza

Réponses:


870

Vous obtenez cette erreur car "origine" n'est pas disponible. "origine" est une convention qui ne fait pas partie de la commande. "origine" est le nom local du référentiel distant.

Par exemple, vous pouvez également écrire:

git remote add myorigin git@github.com:myname/oldrep.git  
git remote add testtest git@github.com:myname/oldrep.git

Voir le manuel:

http://www.kernel.org/pub/software/scm/git/docs/git-remote.html

Pour supprimer un référentiel distant, vous entrez:

git remote rm origin

Encore une fois, «origine» est le nom du référentiel distant si vous souhaitez supprimer la télécommande «en amont»:

git remote rm upstream

8
"git remote rm origin" n'a pas fonctionné de moi, si cela ne fonctionne pas pour vous essayez de vérifier avec "git remote -v" cela vous montrera si votre origine a un ensemble d'url, si cela ne vous est probablement pas a fait l'init localement et essaye de le pousser à distance, et a fait un faux pas comme moi). Suivez ensuite la réponse de RobinH: git remote set-url origin git@github.com: username / projectname.git
Clarence Liu

1
cochez cette réponse pour forcer l'url.
srodriguex

"git remote rm origin" a fonctionné comme un charme, merveilleux! :) puhh, je suis nouveau dans la terminologie de git, donc c'était une recherche plus importante, mais votre réponse m'a beaucoup aidé. :) Merci!
Martin Pfeffer

3
git push -u origin master --force
Ronnie Royston

--force est la solution!
créateur

260

Les solutions précédentes semblent ignorer l'origine et suggèrent seulement d'utiliser un autre nom. Lorsque vous souhaitez simplement utiliser git push origin, continuez à lire.

Le problème apparaît car un mauvais ordre de configuration Git est suivi. Vous avez peut-être déjà ajouté une «origine git» à votre configuration .git.

Vous pouvez modifier l'origine distante dans votre configuration Git avec la ligne suivante:

git remote set-url origin git@github.com:username/projectname.git

Cette commande définit une nouvelle URL pour le référentiel Git vers lequel vous souhaitez pousser. L'important est de remplir votre propre nom d'utilisateur et nom de projet


7
Merci, exactement ce que je devais faire :)
winkbrace

Cela m'a fait plaisir. Mais ce qui m'a vraiment aidé avec ce problème, c'est que j'utilise portableGit qui a été installé avec Gihub pour Windows. J'ai trouvé la solution ici
PerseP

Génial! J'avais besoin de changer mon repo gitorious en repo git lab et cette solution était parfaite! Je vous remercie!
Marcelo dos Santos

Même situation que OP, et je devais le faire, puis la solution de @ MrHus.
Sean the Bean

4
Ceci est la meilleure réponse à mon humble avis
kratos

83

Si vous avez nommé par erreur le nom local comme "origine", vous pouvez le supprimer avec ce qui suit:

git remote rm origin

Que signifie réellement "nommer par erreur le nom local comme 'origine'"? Pouvez-vous l'expliquer en détail? @Ozgur
Yuan Wen

1
Cela pourrait signifier que vous avez ajouté l'origine distante qui ne pointe pas vers un référentiel git. Par conséquent, si vous prévoyez de transmettre toutes vos modifications au maître, le git se plaindra en disant que l'origine distante n'est pas un référentiel git.
Gautham Honnavara

22

MÉTHODE1->

Puisque l'origine existe déjà, supprimez-la.

git remote rm origin
git remote add origin https://github.com/USERNAME/REPOSITORY.git

MÉTHODE2->

On peut également modifier l'URL du référentiel distant existant par -> git remote set-url

Si vous effectuez une mise à jour pour utiliser HTTPS

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

Si vous effectuez une mise à jour pour utiliser SSH

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

Si vous essayez de mettre à jour une télécommande qui n'existe pas, vous recevrez une erreur. Alors faites attention à ça.

MÉTHODE3->

Utilisez la commande git remote rename pour renommer une télécommande existante. Un nom distant existant, par exemple, origine.

git remote rename origin startpoint
# Change remote name from 'origin' to 'startpoint'

Pour vérifier le nouveau nom de la télécommande->

git remote -v

Si vous débutez avec Git, essayez ce tutoriel->

TRY GIT TUTORIAL


1
Merci beaucoup. J'ai été téléchargé, quelqu'un d'autre a git et a ensuite voulu le cloner dans mon GitHub aussi. Enfin, je réussis en utilisant votre première méthode.
Naimur Hasan

17

Vous pouvez simplement modifier votre fichier de configuration dans un éditeur de texte.

Dans le, ~/.gitconfigvous devez mettre quelque chose comme ceci:

[user]
        name  = Uzumaki Naruto
        email = myname@example.com

[github]
        user = myname
        token = ff44ff8da195fee471eed6543b53f1ff

Dans le oldrep/.git/configfichier (dans le fichier de configuration de votre référentiel):

[remote "github"]
        url = git@github.com:myname/oldrep.git
        push  = +refs/heads/*:refs/heads/*
        push  = +refs/tags/*:refs/tags/*

S'il existe une section distante dans le fichier de configuration de votre référentiel et que l'URL correspond, il vous suffit d'ajouter la configuration push. Si vous utilisez une URL publique pour récupérer, vous pouvez mettre l'URL pour pousser en tant que «pushurl» (avertissement: cela nécessite la version 1.6.4 de Git qui vient d'être publiée).


10
  1. git remote rm origin

  2. git remote -v Il n'affichera aucun nom de référentiel

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

  4. git push origin master Il démarrera le processus et créera la nouvelle branche. Vous pouvez voir que votre travail est poussé vers github.


8

Vous n'avez pas à supprimer votre télécommande "d'origine" existante, utilisez simplement un nom autre que "origine" pour votre ajout à distance, par exemple

git remote ajouter github git@github.com: myname / oldrep.git


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

6

J'ai eu le même problème, et voici comment je l'ai résolu après avoir fait des recherches:

  1. Téléchargez GitHub pour Windows ou utilisez quelque chose de similaire, qui comprend un shell
  2. Ouvrez le Git Shellmenu des tâches. Cela ouvrira un Power Shell comprenant des commandes Git.
  3. Dans le shell, passez à votre ancien référentiel, par exemple cd C:\path\to\old\repository
  4. Afficher l'état de l'ancien référentiel

  5. Maintenant, supprimez le référentiel distant du référentiel local en utilisant

    git remote rm origin
    
  6. Vérifiez à nouveau à l'étape 4. Il devrait s'afficher originuniquement, au lieu du chemin d'extraction et de poussée.

  7. Maintenant que votre ancien référentiel distant est déconnecté, vous pouvez ajouter le nouveau référentiel distant. Utilisez ce qui suit pour vous connecter à votre nouveau référentiel.

Remarque: Si vous utilisez Bitbucket, vous devez d'abord créer un projet sur Bitbucket. Après la création, Bitbucket affichera toutes les commandes Git requises pour pousser votre référentiel vers un environnement distant, qui ressemblent à l'extrait de code suivant. Cependant, cela fonctionne également pour d'autres référentiels.

cd /path/to/my/repo # If haven't done yet
git remote add mynewrepo https://user@bitbucket.org/team-or-user-name/myproject.git
git push -u mynewrepo master # To push changes for the first time

C'est ça.


5

J'ai eu le même problème lors de ma première utilisation de Bitbucket .

Mon problème était que je devais changer l'origine du mot pour quelque chose d'auto-défini. J'ai utilisé le nom de l'application. Donc:

git remote add AppName https://someone@bitbucket.org/somewhere/something.git

4

Vous devez remplacer le nom du référentiel distant par autre chose.

git remote add origin git@github.com:myname/oldrep.git

à

git remote add neworigin git@github.com:myname/oldrep.git

Je pense que cela devrait fonctionner.

Oui, ce sont pour l'initialisation du référentiel et l'ajout d'une nouvelle télécommande. Juste avec un changement de nom.


3

Vous pouvez également modifier le nom du référentiel vers lequel vous souhaitez pousser dans le fichier REPOHOME / .git / config

(où REPOHOME est le chemin vers votre clone local du référentiel).


1

Cela peut également se produire lorsque vous oubliez d'effectuer un premier commit.


0

Vous devez vérifier le originet ajouter s'il n'existe pas.

if ! git config remote.origin.url >/dev/null; then
    git remote add origin git@github.com:john/doe.git
fi

Créez un fichier check.sh, collez le script, mettez à jour l'URL de votre référentiel git et exécutez ./check.sh.


0

Étape 1

git remote rm origin

Étape 2

git remote add origin enter_your_repository_url

Exemple:

git remote add origin https://github.com/my_username/repository_name.git

-1

Tout d'abord, écrivez cette ligne de code pour la télécommande supprimée:

$ git remote rm origin

puis écrivez cette ligne:

$ git remote add origin https://github.com/khadim321/React-Form.git

Cela fonctionne correctement.


veuillez essayer de fournir plus d'explications afin de donner plus de valeur à votre réponse
Zeina

Je ne sais pas si cela aide quelqu'un à ajouter l'un de vos référentiels github comme origine distante. Cette question a déjà reçu plusieurs réponses. Vérifiez l'autre question avant d'en créer une nouvelle avec une si faible qualité.
thmspl

-1

si vous souhaitez créer un nouveau référentiel avec le même projet à l'intérieur du github et que la télécommande précédente ne vous permet pas de le faire dans ce cas, supprimez d'abord ce référentiel sur github, il vous suffit de supprimer le dossier .git C: \ Users \ Shiva \ AndroidStudioProjects \ yourprojectname \ .git supprimez ce dossier , (assurez-vous de cliquer sur le fichier caché car ce dossier est caché)

Cliquez également sur le moins (bouton Supprimer) du paramètre du studio Android-> VersionControl cliquez ici pour supprimer le contrôle de version d'Android Et vous pourrez ensuite créer un nouveau référentiel.

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.