"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://[email protected]/repo.git
To https://[email protected]/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://[email protected]/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?

Sensé
la source

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
bytedev
la source
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.)

Sensé
la source
«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

JDev-Guns
la source
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

Ogglas
la source
14

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

entrez la description de l'image ici

Sudheer Kumar Palchuri
la source
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.

YoungJeXu
la source
-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
Marco Barbero
la source