"Aktualisierungen wurden abgelehnt, weil das Tag bereits vorhanden ist", wenn versucht wurde, SourceTree zu übertragen


115

Beim Versuch, über den Quellbaum zu pushen, wird folgende Fehlermeldung angezeigt:

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

Soweit ich weiß, habe ich an diesem Tag keine Änderungen vorgenommen. Wie kann ich das beheben?

Antworten:


226

Sie sollten dies auch in Git Bash lösen können (klicken Sie in der Quellbaum-Benutzeroberfläche auf die Schaltfläche "Terminal"). Art:

git pull --tags

3
Ich denke, dies ist die beste Antwort, denn es ist der Weg des geringsten Widerstands.
Tschad

38
Mit einem Konflikt können Sie tun git pull --tags -f, um den, den Sie lokal haben, zu überschreiben, wenn Sie dies wünschen
DenLilleMand

2
Klicken Sie in SourceTree auf Abrufen und aktivieren Sie "Alle Tags abrufen". Das würde es tun.
Darkgaze

115

Wenn Sie keine lokalen Änderungen an dem Tag vorgenommen haben, das Sie behalten möchten, können Sie dies tun Tag entfernen, das abgelehnt wurde, weil es bereits vorhanden ist ( example_tagin diesem Fall):

  1. Klicken Sie mit der rechten Maustaste auf das Tag und löschen Sie es (stellen Sie sicher, dass Maustaste auf deaktivieren Sie das Kontrollkästchen Tag von allen Fernbedienungen entfernen ).
  2. Wählen Sie das Fetch - Option (Fetch und speichern Sie alle Tags lokal nicht nicht aktiviert werden müssen).
  3. Sie sollten jetzt das Tag haben, das gerade gelöscht wurde, und der Versuch, Push zu betreiben, zeigt diese Fehlermeldung nicht mehr an.

Der Grund dafür ist häufig in SourceTree ist, weil die Push - alle - Tags - Option eingestellt ist auf standardmäßig. (Eine andere Möglichkeit, diesen Fehler auszublenden, besteht darin, diese Option zu deaktivieren.)


"Alle Tags lokal abrufen und speichern muss nicht aktiviert sein" hat es für mich getan und überprüft, dass sich das Problem gerade wiederholt hat.
Tom

Unter der Annahme, dass das vorgelagerte (Ursprungs-) Repo die Quelle der Wahrheit ist, ist diese Lösung am wenigsten destruktiv und behebt das Problem sofort.
Steve Henty

Wenn Sie 15 abgelehnte Tags haben, können die Schritte 1,2 und 3 leider sehr mühsam sein. Ja, das Deaktivieren der Option "Alle Tags verschieben" ist wahrscheinlich der richtige Weg.
SagiSergeNadir

27

Deaktivieren Sie push all tagsam unteren Rand der Benutzeroberfläche, wenn Sie Ihren Git-Push bestätigen


Meinten Sie push all tags?
Wodin

Toll! Hab es nicht beobachtet. Vielen Dank
Meg-90

@Wodin Wenn Sie also die push all tagsin der Benutzeroberfläche überprüfen, wird versucht, die vorherigen Tags zu überschreiben. aber Sie müssen es deaktivieren, um das Überschreiben zu verhindern
JDev-Guns

@ JDev-Guns Ich habe gerade den Wortlaut abgefragt. Du hast ursprünglich gesagt push all TABs. Ich bin mit SourceTree nicht vertraut, aber ich vermutete, dass Sie TAGsstattdessen gemeint haben TABs.
Wodin

@Wodin oh gotcha! Ich glaube, ich sagte, TAGsaber wenn ich es nicht tat, wollte ich sagenTABs
JDev-Guns

15

git pull --tagsfunktioniert sehr gut, aber manchmal kann es sogar mit diesem Befehl zu einem Fehler kommen. Beispielfehlermeldung:

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

Dies kann mit dem Befehl gelöst werden: git pull --tags -f

Quelle:

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


14

Stellen Sie sicher, dass Sie die Schaltfläche "Alle Tags drücken" deaktivieren, während Sie drücken.

Geben Sie hier die Bildbeschreibung ein


Wenn Sie, wie oben erwähnt, ein neues Tag lokal hinzugefügt haben, bedeutet dies nicht, dass es nicht auf die Fernbedienung übertragen wird?
Bytedev

0

Ja, ziehen Sie die Tags zuerst vor sich her push --tags. Mein Problem gelöst.


-1

Ich löse das Problem in SourceTree folgendermaßen :

  1. Löschen des Tags mit der Auswahl "Tag von allen Fernbedienungen entfernen"
  2. Das Tag neu erstellen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.