Antworten:
Überprüfen Sie die Dokumentation auf git describe. Es findet das einem bestimmten Commit am nächsten liegende Tag (dh ein Tag, das auf einen Vorfahren des Commits verweist) und beschreibt dieses Commit anhand des Tags.
Wenn Sie nur wissen möchten, ob ein Tag auf das Commit zeigt, können Sie die Ausgabe von:
git describe --exact-match <commit-id>
git describe --all --exact-match `git rev-parse HEAD`
git describe --tags --abbrev=0 REVdies hilfreich, wenn Sie den Müll nicht auf dem Tag haben möchten.
git describe --all(für das aktuell ausgecheckte Commit) oder git describe --all <commit>haben immer fast alles getan, was ich jemals wollte.
Wenn Sie das erste Tag möchten, das das Commit enthält, dann:
git describe --contains <commit>
gibt die beste Antwort IMO. Wenn Sie häufige Tags haben als die Verwendung von "git tag --contains" für ein altes Commit in einem großen Repository, kann die Ausführung eine Weile dauern und Sie erhalten alle Tags, die dieses Commit enthalten.
Diese Form der Git-Beschreibung wird sehr schnell ausgeführt und gibt Ihnen einen einzelnen Ausgabewert, der das erste Tag ist, das das Commit enthält, und wie weit Ihr Commit zurückliegt.
Wie wäre es damit?
git tag --points-at <commit-id>
Es gibt Ihnen alle Tags, die das angegebene Commit hat (während git describees Ihnen nur eines gibt), und enthält keine Tags für Nachkommen-Commits (wie dies der git tag --containsFall ist).
Sie finden diese Informationen im Handbuch
git tag --contains <commit>
Ich fand die Kombination der beiden Top-Antworten, um mir zu geben, was ich wollte:
git describe --tags --exact-match <commit-id>
Dies gibt Ihnen das Tag, das NUR für dieses Commit und für diejenigen ohne Anmerkung ist. Nützlich, wenn Sie Tags suchen möchten und sich nicht darum kümmern müssen, die Formatierung zu entfernen (z. B. für Jenkins).
z.B. $ git describe --tags --exact-match head~2
Gibt Ihnen:
$ ReleaseBeta
Einige der Antworten konsolidieren:
git tag --contains [<ref>]
und
git tag --points-at [<ref>]
oder nur
git tag
Verhalten Sie sich gleich und drucken Sie alle (und alle) Tags für die angegebene Referenz oder das aktuelle Commit, falls nicht angegeben.
git describe --tags [<ref>]
wo <ref>standardmäßig die aktuellen begeht, Ausfahrten mit 128 , wenn keine Tags zugeordnet sind , mit dem Commit, und druckt einen Tag im Zusammenhang mit der Commit (es scheint kein Muster zu sein).
git describe [<ref>]
verhält sich genauso wie mit, --tagsaußer dass nur kommentierte Tags gedruckt werden.
Wenn Sie die Option --containszum describeDrucken eines Tags verwenden, das einem Vorfahren des angegebenen Commits zugeordnet ist. Beispielsweise
$ git init
Initialized empty Git repository in /tmp/test
$ git commit -m one --allow-empty
[master (root-commit) 7fdfff2] one
$ git commit -m two --allow-empty
[master cd5f8f1] two
$ git tag -am foo foo
$ git tag bar
$ git log --format=oneline
cd5f8f1f4f29eb164f83e224768ccaf37fe170ed (HEAD -> master, tag: foo, tag: bar) two
7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1 one
$ git describe 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
fatal: No tags can describe '7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1'.
Try --always, or create some tags.
$ git describe --contains 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
bar~1
git describe --tags <commit-id>für nicht kommentierte Tags