Was ist mit allen Vorschlägen falsch (außer der Erklärung von Matthew Brett , aktuell in diesem Antwortbeitrag)?
Führen Sie einfach einen Befehl von anderen auf jQuery Git Geschichte geliefert , wenn Sie an anderer Stelle der Geschichte und Prüfergebnis mit visueller Tagging Geschichte Darstellung (I tat das ist , warum Sie diesen Beitrag sehen):
$ git log --graph --all --decorate --oneline --simplify-by-decoration
Heutzutage führen viele Projekte Releases (und damit Tagging) in einem von der Hauptlinie getrennten Zweig durch .
Dafür gibt es starke Gründe . Schauen Sie sich einfach alle etablierten JS / CSS-Projekte an. Für Benutzerkonventionen enthalten sie binäre / minimierte Release-Dateien in DVCS. Natürlich möchten Sie als Projektbetreuer Ihren Mainline- Diff- Verlauf nicht mit nutzlosen binären Blobs verschmutzen und das Festschreiben von Build-Artefakten außerhalb der Mainline durchführen .
Da Git DAG und keine lineare Historie verwendet, ist es schwierig, die Entfernungsmetrik zu definieren, sodass wir sagen können, dass die Drehzahl meiner am nächsten kommt HEAD
!
Ich beginne meine eigene Reise in (schau hinein, ich habe keine ausgefallenen Proof-Bilder in diesen langen Beitrag kopiert):
Was ist das nächste Tag in der Vergangenheit in Bezug auf die Verzweigung in Git?
Derzeit habe ich 4 vernünftige Definitionen des Abstands zwischen Tag und Revision mit abnehmender Nützlichkeit:
- Länge des kürzesten Wegs von
HEAD
, um die Basis mit dem Tag zusammenzuführen
- Datum der Zusammenführungsbasis zwischen
HEAD
und Tag
- Anzahl der Umdrehungen , die vom HEAD aus erreichbar, aber vom Tag aus nicht erreichbar sind
- Datum des Tags unabhängig von der Zusammenführungsbasis
Ich weiß nicht, wie ich die Länge des kürzesten Weges berechnen soll .
Skript, das Tags nach dem Datum der Zusammenführungsbasis zwischen HEAD
und tag sortiert :
$ git tag \
| while read t; do \
b=`git merge-base HEAD $t`; \
echo `git log -n 1 $b --format=%ai` $t; \
done | sort
Es ist für die meisten Projekte verwendbar.
Skript, das Tags nach der Anzahl der Umdrehungen sortiert , die über HEAD erreichbar, aber nicht über tag erreichbar sind:
$ git tag \
| while read t; do echo `git rev-list --count $t..HEAD` $t; done \
| sort -n
Wenn Ihre Projekthistorie seltsame Daten für Commits hat (aufgrund von Rebases oder einer anderen Neufassung der Historie oder eines Trottels, vergessen Sie, die BIOS-Batterie oder andere Magie, die Sie für die Historie ausführen, zu ersetzen), verwenden Sie das obige Skript.
Für die letzte Option ( Datum des Tags unabhängig von der Zusammenführungsbasis ), um eine Liste der Tags nach Datum sortiert zu erhalten, verwenden Sie:
$ git log --tags --simplify-by-decoration --pretty="format:%ci %d" | sort -r
Um das aktuelle Überarbeitungsdatum bekannt zu machen, verwenden Sie:
$ git log --max-count=1
Beachten Sie, dass git describe --tags
die Verwendung in eigenen Fällen erfolgt, jedoch nicht zum Auffinden des vom Menschen erwarteten nächsten Tags in der Projekthistorie .
HINWEIS Sie können die oben genannten Rezepte für jede Revision verwenden. Ersetzen HEAD
Sie sie einfach durch das, was Sie möchten!