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?
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?
Antworten:
Das Sortieren nach dem Erstellungsdatum des Tags funktioniert mit kommentierten und leichtgewichtigen Tags:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagstat 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=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
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
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:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Oder:
git tag --sort=-creatordate
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öglicht git tag --sort=taggerdate(von DarVar unten erwähnt ).
Als Beispiel wird im git/gitRepo das v2.10.0letzte Tag aufgelistet :
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
Die Standardreihenfolge würde nicht ( git tag):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
creatordate!
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
Auch schöne Ausgabe von (ohne Datumsfeld):
git log --tags --decorate --simplify-by-decoration --oneline
So zeigen Sie den vollständigen Verlauf mit Abhängigkeiten und gestreiften linearen Commits an (nur wesentliche Ereignisse wie Tagging und Verzweigung / Zusammenführung):
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"und es funktioniert am besten für mich.
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.
Dieser Einzeiler zeigt Daten und Tags ohne viel Aufhebens an.
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
Ausgabe:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
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 .
Um kommentierte Tags und Lightweight-Tags basierend auf dem Festschreibungsdatum zu sortieren, verwende ich:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Dieser Befehl listet jedes Tag und die zugehörige Festschreibungsobjekt-ID in chronologischer Reihenfolge auf.
Das Folgende hängt vom Commit ab, daher spielt es keine Rolle, ob es Datumsinformationen mit dem Commit enthält:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
Die obige Antwort von Josh Lee basiert auf einem Tag-Datum, um die richtige Bestellung zu erhalten.
tacist - könnte ihn in ändern more. 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:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'