Ich habe die Befehle gesehen git describe
und git-name-rev
es ist mir nicht gelungen, sie dazu zu bringen, mehr als ein Tag aufzulisten.
Beispiel: Ich habe den sha1 48eb354 und weiß, dass die Tags A und B darauf verweisen. Ich möchte also einen git-Befehl git {something} 48eb354
, der eine Ausgabe ähnlich "A, B" erzeugt. Ich bin nicht daran interessiert, Referenzen relativ zu anderen Tags oder Zweigen zu kennen, nur genaue Übereinstimmungen für Tags.
-e 's/\^{}//'
-d
Option aufgit show-ref
. In den Dokumenten werden "-d, --dereference Dereference-Tags auch in Objekt-IDs eingefügt. Sie werden mit" ^ {} "als Anhang angezeigt."${ref}
, einschließlich kommentierter Tags:hash=$(git rev-parse "${ref}^0"); git show-ref --tags -d | sed -n -e 's,^'"${hash}"' refs/tags/\(.*\)^{}$',\1,p'
git tag --points-at HEAD
Zeigt alle Tags bei HEAD an. Sie können HEAD auch durch eine beliebige sha1-ID ersetzen.
quelle
Sie können verwenden:
Das zeigt alle Tags bei bestimmten Commit. Es kann verwendet werden anstelle von:
das ist nur ab 1.7.10 verfügbar.
quelle
--contains
erscheint auch viel langsamer als--points-at
(7-8s Ausführungszeit vs <1s)Schade, dass es nicht einfacher geht. Ein weiteres Flag
git tag
für Commit-IDs könnte diesengit for-each-ref
Aufruf auf natürliche Weise ausdrücken .quelle
Der folgende Befehl erledigt den Job, analysiert jedoch direkt den Inhalt des .git-Verzeichnisses und kann daher unterbrochen werden, wenn sich das Format des Git-Repositorys ändert.
quelle
Für das aktuelle Commit können Sie verwenden
quelle