547 Stimmen

Wie kann man feststellen, auf welchen Commit ein Tag in Git verweist?

Ich habe einen Haufen unkommentierter Tags im Repository und möchte herausfinden, auf welchen Commit sie verweisen. Gibt es einen Befehl, der einfach die Tags und ihre Commit-SHAs auflistet? Das Auschecken der Tags und das Betrachten des HEADs erscheint mir etwas zu mühsam.

Update

Nachdem ich die Antworten durchgesehen hatte, wurde mir klar, dass ich eigentlich nur die Vorgeschichte der Markierung betrachten wollte, für die git log <tagname> ist ausreichend.

Die Antwort, die als Antwort markiert ist, ist nützlich, um eine Liste von Tags und deren Übertragungen zu erhalten, was meine Frage war. Mit ein bisschen Shell-Hackery bin ich sicher, dass es möglich ist, diese in SHA+Commit Nachricht umzuwandeln.

7voto

Terrence Reilly Punkte 106

Auch wenn dieser Artikel schon ziemlich alt ist, möchte ich auf eine coole Funktion hinweisen, die ich gerade gefunden habe, um Tags mit Commits aufzulisten:

git log --decorate=full

Es zeigt die Zweige an, die an einem Commit enden/beginnen, und die Tags für Commits.

5voto

Antony Hatchkins Punkte 28362

Sie können sich auch ein leichter zu interpretierendes Bild davon machen, wohin die Tags zeigen, indem Sie

git log --graph |git name-rev --stdin --tags |less

und blättern Sie dann zu dem gesuchten Tag über / .

Kompaktere Ansicht ( --pretty=oneline ) plus alle Köpfe ( -a ) könnte ebenfalls helfen:

git log -a --pretty=oneline --graph |git name-rev --stdin --tags |less

Sieht etwas furchteinflößend aus, könnte aber auch als Alias in ~/.gitconfig falls erforderlich.

~/.gitconfig

[alias]
ls-tags = !git log -a --pretty=oneline --graph |git name-rev --stdin --tags |less

3voto

anatoly techtonik Punkte 18578

から Git-Mailingliste Hier ist der Weg, um die Liste der Commit-Hashes für Tags mit automatischer Dereferenzierung für annotierte Tags zu erhalten:

git for-each-ref --format='%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end) %(refname)' refs/tags

3voto

Peter Stuifzand Punkte 4908

Dies zeigt zwar nicht die Dateinamen an, aber man bekommt zumindest einen Eindruck vom Repository.

cat .git/refs/tags/*

Jede Datei in diesem Verzeichnis enthält einen Commit-SHA, der auf einen Commit verweist.

2voto

miku Punkte 170688

Ich würde auch gerne wissen der richtige Weg aber Sie können jederzeit einen Blick darauf werfen:

$ cat .git/packed-refs 

oder:

$ cat .git/refs/tags/*

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X