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.

3voto

Olivier Punkte 143

Unabhängig von den Problemen, die mit dem Verschieben von Tags und dem Umbenennen von bereits verschobenen Tags verbunden sind, ist das umzubenennende Tag in dem Fall ein kommentiert können Sie es zunächst mit Hilfe der folgenden einzeiligen Befehlszeile kopieren:

git tag -a -m "`git cat-file -p old_tag | tail -n +6`" new_tag old_tag^{}

Dann müssen Sie nur noch den alten Tag löschen:

git tag -d old_tag

Ich habe diese Befehlszeile dank der beiden folgenden Antworten gefunden:

Edit :
Probleme mit der automatischen Synchronisierung von Tags haben fetch.pruneTags=true (wie beschrieben in https://stackoverflow.com/a/49215190/7009806 ), empfehle ich persönlich erste kopieren Sie das neue Tag auf den Server und dann löschen Sie die alte Datei. Auf diese Weise wird der neue Tag nicht zufällig gelöscht, wenn der alte Tag gelöscht wird und eine Synchronisierung der Tags den neuen Tag löschen möchte die sich noch nicht auf dem Server befindet . So erhalten wir zum Beispiel alles zusammen:

git tag -a -m "`git cat-file -p old_tag | tail -n +6`" new_tag old_tag^{}
git push --tags
git tag -d old_tag
git push origin :refs/tags/old_tag

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