Wie man loswird "würde vorhandenes Tag verstopfen"

110

Ich benutze Git in VSCodium und jedes Mal, wenn ich versuche, Git zu ziehen, beschwere ich mich.

Ich schaue in das Protokoll, das ich sehe

> git pull --tags origin master
From https://github.com/MY/REPO
 * branch            master     -> FETCH_HEAD
 ! [rejected]        latest     -> latest  (would clobber existing tag)
   9428765..935da94  master     -> origin/master

Das Ausführen des Befehls mit --forcehilft bis zum nächsten Mal.

Mir ist unklar, was hier falsch läuft. Was ist passiert und wie kann ich dieses Problem beheben?

Ich meine: Abgesehen davon, dass ich mein lokales Repo weggeworfen und wieder geklont habe.

Skeeve
quelle

Antworten:

280

Sie sollten Ihre lokalen Tags mit Remote-Tags aktualisieren:

git fetch --tags -f

Dann wieder ziehen.

Tuan Tran
quelle
12
Das hat bei mir funktioniert. Ich hatte Probleme mit VSCode, dann wurde das Problem behoben, indem ich dies in der Befehlszeile ausführte. :)
Juan Luis Faylon
2
Danke, können Sie bitte mehr darüber erklären? Ist dies ein einmaliger Befehl, was genau war das Problem und wie hat es das gelöst
?
5
@ Sagivb.g auf remote, jemand einen Tag löscht und einen neuen mit dem gleichen Namen erstellen, dann wird dies auf dem lokalen passieren
Tuan Tran
Oder einfach git pull --tags -fgleich.
Der Hochstapler
37

Da Sie sagen, es sei unklar, was falsch läuft, gehe ich davon aus, dass Sie dieses Tag für nichts verwenden und nur Ihre eigene Arbeit machen möchten.

Deaktivieren Sie diese Einstellung:

Geben Sie hier die Bildbeschreibung ein

Jetzt sind Sie fertig.


Ausführliche Erklärung:

Tags sind nur Verweise auf bestimmte Commits (genau wie Zweignamen). Der Hauptunterschied besteht darin, dass git(soweit ich weiß) davon ausgegangen wird, dass sich die Tags nicht ändern, wenn die Verzweigungen voraussichtlich aktualisiert werden.

Der "Fehler" besteht also darin, dass Sie in Ihrem lokalen Verzeichnis ein Tag mit dem Namen " latestZeigen auf Commit X" haben. Die Fernbedienung verfügt jedoch über ein Tag mit dem Namen " latestZeigen auf Commit Y". Wenn Sie die Änderung von der Fernbedienung aus anwenden, überschreiben Sie Ihr lokales Tag.

VSCode zieht standardmäßig alle Tags, daher wird der Fehler angezeigt.

Es ist nichts Falsches daran , ein "bewegliches" Tag zu haben latest, das VSCode einfach nicht berücksichtigt (persönliche Meinung).


Alternativ können Sie das Problem vermeiden, indem Sie die Befehlszeile verwenden und den git pullBefehl manuell eingeben . Insbesondere müssen Sie weglassen --tags, um diesen Schritt des Prozesses zu überspringen.

Wenn Sie dies tun, werden Ihre Tags nicht aktualisiert - aber ich denke, das ist hier kein Problem.

Vlad274
quelle
Danke vielmals. Ich musste mein VSCodium aktualisieren, aber dann funktionierte es. Ich denke, ich könnte auch mein lokales Tag loswerden?
Skeeve
1
siehe meine Antwort unten
Tuan Tran