"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://[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

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

Sinnvoll
quelle

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
bytedev
quelle
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.)

Sinnvoll
quelle
"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

JDev-Waffen
quelle
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

Ogglas
quelle
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

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

YoungJeXu
quelle
-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
Marco Barbero
quelle