1512 Stimmen

Wie benennt man ein Git-Tag um?

Heute habe ich die Protokolle für ein Projekt durchgesehen und festgestellt, dass ich vor einiger Zeit einen Tag-Namen falsch benannt habe. Gibt es eine Möglichkeit, die Markierung umzubenennen? Google hat nichts Nützliches gefunden.

Mir ist klar, dass ich die getaggte Version auschecken und ein neues Tag erstellen könnte, das habe ich auch schon versucht. Aber das scheint ein Tag-Objekt zu erzeugen, das nicht ganz richtig ist. Zum einen,

git tag -l

listet sie im Vergleich zu allen anderen Tags in einer falschen Reihenfolge auf. Ich habe keine Ahnung, ob das von Bedeutung ist, aber es führt mich zu der Annahme, dass das neue Tag-Objekt nicht ganz das ist, was ich will. Ich kann damit leben, weil ich wirklich nur darauf achte, dass der Tag-Name mit der Dokumentation übereinstimmt, aber ich würde es lieber "richtig" machen, vorausgesetzt, es gibt einen richtigen Weg, dies zu tun.

2573voto

Casey Watson Punkte 49136

So benenne ich ein Tag um old à new :

git tag new old
git tag -d old
git push origin new :old

Der Doppelpunkt im Push-Befehl entfernt das Tag aus dem entfernten Repository. Wenn Sie dies nicht tun, wird Git beim Pull das alte Tag auf Ihrem Rechner anlegen. Stellen Sie schließlich sicher, dass die anderen Benutzer das gelöschte Tag entfernen. Bitte sagen Sie sie (Mitarbeiter), den folgenden Befehl auszuführen:

git pull --prune --tags

Beachten Sie, dass wenn Sie ein kommentiertes Tag ändern müssen Sie sicherstellen, dass die neue Tag-Name auf das zugrunde liegende Commit verweist und nicht auf das alte kommentierte Tag Objekt verweist, das Sie gerade löschen wollen. Verwenden Sie daher git tag -a new old^{} anstelle von git tag new old (dies liegt daran, dass kommentierte Tags Objekte sind, während leichtgewichtige Tags nicht sind, mehr Informationen in dieser Antwort ).

334voto

Greg McGary Punkte 3276

Die ursprüngliche Frage war, wie man einen Tag umbenennen kann. Das ist ganz einfach: Erstellen Sie zunächst NEW als Alias von OLD: git tag NEW OLD dann OLD löschen: git tag -d OLD .

Das Zitat bezüglich der "Git-Methode" und der (Un-)Vernunft ist unzutreffend, denn es geht darum, einen Tag-Namen beizubehalten, ihn aber auf einen anderen Repository-Status zu beziehen.

138voto

kaiser Punkte 20765

Zusätzlich zu den anderen Antworten:

Zunächst müssen Sie eine alias der antiguo Tag-Name, der auf die ursprüngliche Übertragung verweist:

git tag new old^{}

Dann müssen Sie die alte Datei löschen vor Ort :

git tag -d old

Löschen Sie dann die Markierung an Ihrem/ihren entfernten Standort(en):

# Check your remote sources:
git remote -v
# The argument (3rd) is your remote location,
# the one you can see with `git remote`. In this example: `origin`
git push origin :refs/tags/old

Schließlich müssen Sie den neuen Tag zum entfernten Standort hinzufügen. Solange Sie dies nicht getan haben, werden die neuen Tags wird nicht hinzugefügt werden:

git push origin --tags

Wiederholen Sie dies für jeden entfernten Standort.

Seien Sie sich bewusst, dass die Auswirkungen, die eine Git-Tag-Änderung hat an die Verbraucher eines Pakets!

38voto

VonC Punkte 1117238

Diese Wikiseite hat diesen interessanten Einzeiler, der uns daran erinnert, dass wir die mehrere Referenzen :

git push origin refs/tags/<old-tag>:refs/tags/<new-tag> :refs/tags/<old-tag> && git tag -d <old-tag>

und andere Kloner bitten, dies zu tun git pull --prune --tags

Die Idee ist also, Druck zu machen:

  • <new-tag> für alle Commits, die von <old-tag> : refs/tags/<old-tag>:refs/tags/<new-tag> ,
  • die Löschung von <old-tag> : :refs/tags/<old-tag>

Siehe zum Beispiel " Benennungskonvention von Tags innerhalb eines Git-Repositorys ändern? ".

29voto

Robert Munteanu Punkte 64955

Wenn es veröffentlicht ist, können Sie es nicht mehr löschen (ohne zu riskieren, geteert und gefedert zu werden). Der "Git-Weg" ist zu tun:

Die vernünftige Sache. Geben Sie einfach zu, dass Sie es vermasselt haben, und verwenden Sie einen anderen Namen. Andere haben bereits einen Tag-Namen gesehen, und wenn Sie denselben Namen beibehalten, kann es passieren, dass zwei Leute beide "Version X" haben, aber in Wirklichkeit unterschiedliche "X". Nennen Sie es also einfach "X.1" und das war's.

Alternativ dazu,

Die verrückte Sache. Sie wollen die neue Version auch "X" nennen, obwohl andere die alte schon gesehen haben. Verwenden Sie also einfach wieder git-tag -f, als ob Sie die alte Version nicht schon veröffentlicht hätten.

Das ist so wahnsinnig, weil:

Git ändert keine Tags hinter dem Rücken der Benutzer (und sollte dies auch nicht tun). Wenn also jemand bereits das alte Tag hat, sollte ein Git-Pull in deinem Baum nicht dazu führen, dass er das alte Tag überschreibt.

Wenn jemand eine Freigabekennzeichnung von Ihnen erhalten hat, können Sie die Kennzeichnung nicht einfach ändern, indem Sie Ihre eigene Kennzeichnung aktualisieren. Dies ist ein großes Sicherheitsproblem, da die Leute in der Lage sein MÜSSEN, ihren Tag-Namen zu vertrauen. Wenn Sie wirklich etwas Verrücktes tun wollen, müssen Sie es einfach zugeben und den Leuten sagen, dass Sie es vermasselt haben.

Alles mit freundlicher Genehmigung der Handbuchseiten .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X