Wie liste ich alle Git-Tags auf?


675

In meinem Repository habe ich Tags mit den folgenden Befehlen erstellt.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

Wie listet man alle Tags im Repository auf?

Antworten:


953
git tag

sollte genug sein. Siehe git tagManpage


Sie haben auch:

git tag -l <pattern>

Listen Sie Tags mit Namen auf, die dem angegebenen Muster entsprechen (oder alle, wenn kein Muster angegeben ist).
Wenn Sie "git tag" ohne Argumente eingeben, werden auch alle Tags aufgelistet.


In jüngerer Zeit (" Wie sortiere ich Git-Tags? ", Für Git 2.0+)

git tag --sort=<type>

In einer bestimmten Reihenfolge sortieren.

Unterstützter Typ ist:

  • " refname" (lexikografische Reihenfolge),
  • " version:refname" oder " v:refname" (Tag-Namen werden als Versionen behandelt).

Stellen Sie "-" voran, um die Sortierreihenfolge umzukehren.


Das listet beide auf:

  • kommentierte Tags : vollständige Objekte, die in der Git-Datenbank gespeichert sind. Sie sind Prüfsummen; den Tagger-Namen, die E-Mail-Adresse und das Datum enthalten; eine Tagging-Nachricht haben; und kann mit GNU Privacy Guard (GPG) signiert und verifiziert werden.
  • Leichte Tags : Einfacher Zeiger auf ein vorhandenes Commit

Hinweis: Der git-fähige Artikel zum Markieren missbilligt das leichte Tag.

Ohne Argumente erstellt das Git-Tag ein "leichtes" Tag, das im Grunde ein Zweig ist, der sich nie bewegt.
Leichte Tags sind jedoch immer noch nützlich, möglicherweise zum Markieren einer bekannten guten (oder schlechten) Version oder einer Reihe von Commits, die Sie möglicherweise in Zukunft verwenden müssen.
Trotzdem möchten Sie diese Art von Tags wahrscheinlich nicht pushen .

Normalerweise möchten Sie mindestens die Option -a übergeben, um ein nicht signiertes Tag zu erstellen, oder das Tag mit Ihrem GPG-Schlüssel über die Optionen -s oder -u signieren.


Davon abgesehen weist Charles Bailey darauf hin, dass ein ' git tag -m "..."' tatsächlich ein richtiges (nicht signiertes, mit Anmerkungen versehenes) Tag (Option ' -a') impliziert und kein leichtes. Sie sind also gut mit Ihrem anfänglichen Befehl.


Dies unterscheidet sich von:

git show-ref --tags -d

Welche listet Tags mit ihren Commits auf (siehe " Git-Tag-Liste, Commit-sha1-Hashes anzeigen ").
Beachten Sie das, -dum das mit Anmerkungen versehene Tag-Objekt (das über ein eigenes Commit SHA1 verfügt) zu dereferenzieren und das tatsächlich mit Tags versehene Commit anzuzeigen.

In ähnlicher Weise git show --name-only <aTag>würde das Tag und das zugehörige Commit aufgelistet.


6
Es lohnt sich wahrscheinlich hinzuzufügen, dass -m oder -F -a impliziert (wenn nicht -a, -s oder -u explizit angegeben werden. Sie können keine Tag-Nachricht haben, ohne ein 'richtiges' Tag-Objekt zu erstellen.
CB Bailey

1
Hinweis für mich selbst: Mit dieser positiven Bewertung übergebe ich 800000 (31. August 2018) für Stack Overflow, ein Jahr und einen Monat nach Erreichen von 700000 (6. August 2017) .
VonC

190

Um Tags aufzulisten, bevorzuge ich:

git tag -n

Das -nFlag zeigt die erste Zeile der Anmerkungsnachricht zusammen mit dem Tag oder die erste Commit-Nachrichtenzeile an, wenn das Tag nicht mit Anmerkungen versehen ist.

Sie können auch git tag -n5die ersten 5 Zeilen der Anmerkung anzeigen.


48

Ist auch git show-refziemlich nützlich, damit Sie Tags direkt mit entsprechenden Commits verknüpfen können :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...

1
Wenn hg tagsich an Mercurials gewöhnt bin, mag git show-refich das Tag UND die Revision.
Justin


15

Versuchen Sie es zu machen git tagsollte ausreichen, wenn nicht versuchen Sie es git fetchdann zu machen git tag.


4
Ich denke, was er damit meint, ist Folgendes: Das Ausführen eines git tagBefehls sollte ausreichen, wenn Sie nur eine Liste der verfügbaren Tags anzeigen möchten. Wenn Sie einige Tags nicht sehen können, von denen Sie glauben, dass sie auf der Fernbedienung vorhanden sind, sind Ihre lokalen Tags möglicherweise nicht mit der Fernbedienung synchronisiert. In diesem Fall rufen Sie zuerst die neuesten Refs / Köpfe von der Fernbedienung ab git fetch, gefolgt von den tatsächlichen git tag. Normalerweise fahre ich einen Einzeiler wie diesen: $ git fetch -p && git tagNur um sicherzugehen, dass ich auf dem neuesten und besten Stand bin.
Demisx

11

Das Auflisten der verfügbaren Tags in Git ist unkompliziert. Geben Sie einfach git tag(mit optional -loder --list) ein.

$ git tag
v5.5
v6.5

Sie können auch nach Tags suchen, die einem bestimmten Muster entsprechen.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Abrufen des neuesten Tags im Git-Repository

Der Befehl findet das neueste Tag, das über ein Commit erreichbar ist. Wenn das Tag auf das Commit zeigt, wird nur das Tag angezeigt. Andernfalls wird der Tag-Name mit der Anzahl der zusätzlichen Commits über dem markierten Objekt und dem abgekürzten Objektnamen des letzten Commits versehen.

git describe

Mit --abbrevset to 0kann der Befehl verwendet werden, um den nächsten tagnameohne Suffix zu finden:

git describe --abbrev=0

Andere Beispiele:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

So beschneiden Sie lokale Git-Tags, die auf der Fernbedienung nicht vorhanden sind

Um es einfach auszudrücken: Wenn Sie versuchen, so etwas zu tun git fetch -p -t, funktioniert es ab der Git-Version nicht mehr 1.9.4.

Es gibt jedoch eine einfache Problemumgehung, die in den neuesten Versionen weiterhin funktioniert:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags

Der Rev-List- bezogene Befehl gab mir eine Liste, endete aber mit einem Fehler:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit

10

Um Details zum neuesten verfügbaren Tag anzuzeigen, verwende ich manchmal:

git show `git describe` --pretty=fuller

6

Wenn Sie Ihren Tag-Namen lokal überprüfen möchten, müssen Sie zu dem Pfad gehen, in dem Sie das Tag erstellt haben (lokaler Pfad). Bedeutet, wo Sie Ihre Objekte platziert haben. Geben Sie dann den folgenden Befehl ein:

git show --name-only <tagname>

Es werden alle Objekte unter diesem Tag-Namen angezeigt. Ich arbeite in Teradata und Objekt bedeutet Ansicht, Tabelle usw.


4

Sie können alle vorhandenen Tags auflisten git tagoder die Liste mit filtern git tag -l 'v1.1.*', wobei sie *als Platzhalter fungiert. Es wird eine Liste der mit gekennzeichneten Tags zurückgegeben v1.1.

Sie werden feststellen, dass Sie beim Anruf git tagden Inhalt Ihrer Anmerkungen nicht sehen können. Um eine Vorschau anzuzeigen, müssen Sie -nIhrem Befehl Folgendes hinzufügen : git tag -n2.

$ git tag -l -n2

v1.0 Release Version 1.0

v1.1 Release Version 1.1

Der Befehl listet alle vorhandenen Tags mit maximal 3 Zeilen ihrer Tag-Nachricht auf. Standardmäßig wird -nnur die erste Zeile angezeigt . Weitere Informationen finden Sie auch in diesem Artikel zum Thema Tags .


0

Damit eine GUI dies tun kann, habe ich gerade festgestellt, dass 'gitk' benannte Ansichten unterstützt. Die Ansichten bieten verschiedene Optionen zum Auswählen von Commits. Eine praktische ist eine Box zur Auswahl von "Alle Tags". Das scheint für mich zu funktionieren, um die Tags zu sehen.

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.