Wie kann ich alle Tags in meinem Git-Repository bis zum Erstellungsdatum auflisten?
128
Ich brauche eine Möglichkeit, alle Tags in meinem System bis zum Erstellungsdatum aufzulisten, bin mir aber nicht sicher, ob ich diese Daten über Git-Log erhalten kann. Ideen?
Meinen Sie damit, dass Sie die Liste aller Tags in der Reihenfolge ihrer Erstellungsdaten abrufen möchten ?
Lithuak
3
Zu Ihrer Information (1.) Diese Frage dient zur Auflistung von ANNOTATED-Tags nach Datum. (2.) Eine Liste der LIGHTWEIGHT-Tags nach Datum finden Sie hier . (3.) Eine hilfreiche Erinnerung an den Unterschied zwischen Git's Lightweight- und Annotated-Tags finden Sie hier .
Trevor Boyd Smith
@ TrevorBoydSmith: Das ist nicht ganz richtig. Der Unterschied besteht darin, dass (2) alle Tags nach dem Festschreibungsdatum des getaggten Festschreibens auflistet , während diese Seite Lösungen enthält, die nach dem mit Tags versehenen Datum sortiert sind (allerdings nur für mit Anmerkungen versehene Tags, da git das für leichte Tags mit Tags versehene Datum nicht speichert).
David P
Antworten:
174
Das Sortieren nach dem Erstellungsdatum des Tags funktioniert mit kommentierten und leichtgewichtigen Tags:
Genial. git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagstat genau das, was ich brauchte. Vielen Dank!
Jon Ursenbach
21
Eine Lösung von @DrorCohen, die für Lightweight-Tags funktioniert : stackoverflow.com/questions/6900328/… . Zum einfachen Nachschlagen hier einfügen: git log --tags --simplify-by-decoration --pretty = "Format:% ai% d"
Gilead
5
Kann verwendet werden %(contents), um bei Bedarf Anmerkungen hinzuzufügen, z. B.git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
Tim Diggins
7
Oder sogar ein bisschen sauberer:git for-each-ref --sort=taggerdate --format '%(tag)'
Baris Wanschers
4
--sort=creatordatefunktioniert sowohl für mit Anmerkungen versehene als auch für nicht mit Anmerkungen versehene Tags, --sort=taggerdatescheint jedoch nur mit mit Anmerkungen versehenen Tags zu funktionieren. getestet mitgit version 2.16.3
Bei Festschreibungs- und Tag-Objekten
entsprechen die Felder " Spezial" creatordateund " creatorFelder" dem entsprechenden Tupel "Datum" oder "Name-E-Mail-Datum" aus den Feldern " committeroder" tagger, je nach Objekttyp. Diese sind für die Bearbeitung einer Mischung aus kommentierten und leichtgewichtigen Tags vorgesehen .
Die Verwendung creatordatefunktioniert also mit Tags:
Vielen Dank. Ich habe mich gefragt, warum einige Daten leer waren. Ich vermutete bereits leichte Tags. Ich bin froh, dass ich die Tags dank nicht neu erstellen muss creatordate!
So zeigen Sie den vollständigen Verlauf mit Abhängigkeiten und gestreiften linearen Commits an (nur wesentliche Ereignisse wie Tagging und Verzweigung / Zusammenführung):
Für faule Leute: git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"und es funktioniert am besten für mich.
Mateusz
1
Beachten Sie, dass dies nach dem Festschreibungsdatum sortiert ist, nicht nach dem Datum, an dem die Tags erstellt wurden. Die (derzeit) am besten bewertete Antwort von Josh Lee wird nach dem Datum sortiert, an dem das Tag erstellt wurde.
Nathanial Woolls
13
git tag --sort=-taggerdate
Laut Manpage "Präfix - zum Sortieren in absteigender Reihenfolge des Werts".
git tagverwendet die gleichen Sortierschlüssel wie dort git-for-each-ref, wo die Schlüssel dokumentiert sind.
Wenn Sie nicht möchten, wie Tags standardmäßig sortiert werden, können Sie --sort=creatordatebeispielsweise mit der Option nach Datum sortieren . Weitere Informationen finden Sie unter VonC-Antwort .
Ein bisschen verschleiert. ... In kommentierten Tags ist 'Committerdate' leer, während in Lightweight-Tags 'Taggerdate' leer ist. Um dieses Problem zu umgehen, weist '* committerdate' Git an, Daten aus dem ursprünglichen Commit-Objekt zu referenzieren, wenn es leichtgewichtig ist. ...
ingyhere
Die Verwendung von 'creatordate' sollte effektiv dasselbe tun.
Antworten:
Das Sortieren nach dem Erstellungsdatum des Tags funktioniert mit kommentierten und leichtgewichtigen Tags:
quelle
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
tat genau das, was ich brauchte. Vielen Dank!%(contents)
, um bei Bedarf Anmerkungen hinzuzufügen, z. B.git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
funktioniert sowohl für mit Anmerkungen versehene als auch für nicht mit Anmerkungen versehene Tags,--sort=taggerdate
scheint jedoch nur mit mit Anmerkungen versehenen Tags zu funktionieren. getestet mitgit version 2.16.3
Git 2.8 (März 2016) dokumentiert eine weitere Option aus Git 1.4.4 (Oktober 2006) .
Siehe Commit e914ef0 (05. Januar 2016) von Eric Wong (
ele828
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 108cb77 , 20. Januar 2016)Siehe das neue
Documentation/git-for-each-ref.txt
Die Verwendung
creatordate
funktioniert also mit Tags:Oder:
Wie ich in " So sortieren Sie Git-Tags nach der Reihenfolge der Versionszeichenfolgen des Formulars rc-XYZW? " Ausführlich erläutere , können Sie eine Sortierreihenfolge hinzufügen
git tag
(seit Git 2.0, Juni 2014).Diese Sortierreihenfolge enthält als Feldname (aufgeführt in
git for-each-ref
) taggerdate . Dies ermöglichtgit tag --sort=taggerdate
(von DarVar unten erwähnt ).Als Beispiel wird im
git/git
Repo dasv2.10.0
letzte Tag aufgelistet :Die Standardreihenfolge würde nicht (
git tag
):quelle
creatordate
!Auch schöne Ausgabe von (ohne Datumsfeld):
So zeigen Sie den vollständigen Verlauf mit Abhängigkeiten und gestreiften linearen Commits an (nur wesentliche Ereignisse wie Tagging und Verzweigung / Zusammenführung):
quelle
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
und es funktioniert am besten für mich.Laut Manpage "Präfix - zum Sortieren in absteigender Reihenfolge des Werts".
git tag
verwendet die gleichen Sortierschlüssel wie dortgit-for-each-ref
, wo die Schlüssel dokumentiert sind.quelle
Dieser Einzeiler zeigt Daten und Tags ohne viel Aufhebens an.
Ausgabe:
Wenn Sie nicht möchten, wie Tags standardmäßig sortiert werden, können Sie
--sort=creatordate
beispielsweise mit der Option nach Datum sortieren . Weitere Informationen finden Sie unter VonC-Antwort .quelle
Um kommentierte Tags und Lightweight-Tags basierend auf dem Festschreibungsdatum zu sortieren, verwende ich:
Dieser Befehl listet jedes Tag und die zugehörige Festschreibungsobjekt-ID in chronologischer Reihenfolge auf.
quelle
Mit Git
version 2.10.0.windows.1
git tag --sort=taggerdate
quelle
Das Folgende hängt vom Commit ab, daher spielt es keine Rolle, ob es Datumsinformationen mit dem Commit enthält:
Die obige Antwort von Josh Lee basiert auf einem Tag-Datum, um die richtige Bestellung zu erhalten.
quelle
tac
ist - könnte ihn in ändernmore
. Wie auch immer, Ihr Befehl hat großartig funktioniert - danke!Aufbauend auf den zuvor genannten Methoden wollte ich auch das tatsächliche Tag-Datum in der Liste anzeigen. Daher lautet meine verwendete Version:
quelle