"Les mises à jour ont été rejetées car le tag existe déjà" lors de la tentative d'envoi de SourceTree


117

Lorsque je tente de pousser via l'arborescence source, j'obtiens l'erreur suivante:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master 
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
 = [up to date]      master -> master
...
 ! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

Je n'ai apporté aucune modification à cette balise pour autant que je sache. Comment puis-je réparer cela?

Réponses:


229

Vous devriez également pouvoir résoudre ce problème dans git bash (cliquez sur le bouton "Terminal" dans l'interface utilisateur de l'arborescence source). Type:

git pull --tags

3
Je pense que c'est la meilleure réponse car c'est la voie de la moindre résistance.
Tchad

40
Avec un conflit, vous pouvez faire git pull --tags -fpour écraser celui que vous avez localement si c'est ce que vous voulez
DenLilleMand

2
Dans SourceTree, cliquez sur Extraire et activez "Récupérer toutes les balises". Cela le ferait.
darkgaze

116

Si vous n'avez pas apporté de modifications locales à la balise que vous souhaitez conserver, vous pouvez supprimer la balise qui a été rejetée car elle existe déjà ( example_tagdans ce cas):

  1. Cliquez avec le bouton droit sur l'étiquette et choisissez de la supprimer (assurez-vous de décocher la case Supprimer l'étiquette de toutes les télécommandes ).
  2. Choisissez l' option Extraire (Extraire et stocker toutes les balises localement ne doit pas être activée).
  3. Vous devriez maintenant avoir cette balise qui vient d'être supprimée, et la tentative de Push n'affichera plus ce message d'erreur.

La raison pour laquelle ce qui est commun à l'est parce que sources du poussoir toutes les balises option est définie sur par défaut. (Une autre façon de masquer cette erreur consiste à décocher cette option.)


«Récupérer et stocker toutes les balises localement n'a pas besoin d'être activé» est ce qui l'a fait pour moi, en vérifiant que le problème venait de se répéter.
Tom

En supposant que le repo en amont (origine) est la source de vérité, cette solution est la moins destructrice et résout le problème instantanément.
Steve Henty

Malheureusement, lorsque vous avez 15 balises rejetées, les étapes 1, 2 et 3 peuvent être très fastidieuses. Oui, la désactivation de l'option "Pousser toutes les balises" est probablement la bonne solution.
SagiSergeNadir

27

Décochez push all tagsen bas de l'interface utilisateur lorsque vous confirmez votre push git


Voulez-vous dire push all tags?
Wodin le

Génial! Je ne l'ai pas observé. Merci
Meg-90

@Wodin donc si vous VÉRIFIEZ le push all tagsdans l'interface utilisateur, il essaiera d'écraser les balises précédentes. mais vous devez le DÉCROCHER pour éviter l'écrasement
JDev-Guns

@ JDev-Guns J'étais juste en train d'interroger le libellé. Vous l'avez dit à l'origine push all TABs. Je ne connais pas SourceTree, mais je soupçonnais que vous vouliez dire TAGsau lieu de TABs.
Wodin le

@Wodin oh gotcha! Je pense que j'ai dit TAGsmais si je ne l'ai pas fait, je voulais direTABs
JDev-Guns

15

git pull --tagsfonctionne très bien mais parfois vous pouvez obtenir une erreur même avec cette commande. Exemple de message d'erreur:

 ! [rejected]        example_tag      -> example_tag  (would clobber existing tag)

Cela peut être résolu avec la commande: git pull --tags -f

La source:

https://github.com/concourse/git-resource/issues/233


14

Assurez-vous de décocher le bouton «Pousser toutes les balises» tout en appuyant sur.

entrez la description de l'image ici


Comme mentionné ci-dessus, si vous avez ajouté un nouveau tag localement, cela ne signifie-t-il pas qu'il n'est pas poussé vers la télécommande?
bytedev

0

Oui, en effet, tirez les balises avant vous push --tags. J'ai résolu mon problème.


-1

Je résous le problème sur SourceTree de cette manière:

  1. Suppression de la balise avec la sélection "Supprimer la balise de toutes les télécommandes"
  2. Recréer le tag
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.