webentwicklung-frage-antwort-db.com.de

Zeigen Sie, auf welchem ​​Git-Tag Sie sind?

Ich habe Probleme herauszufinden, welches Tag gerade ausgecheckt ist.

Wenn ich mache:

git checkout tag1
git branch

Ich kann nicht herausfinden, auf welchem ​​Tag ich bin. Es protokolliert nur:

* (no branch)
master

Ist es möglich herauszufinden, welche Tags ausgecheckt sind? Im obigen Beispiel wäre dies tag1.

185
grm

Bearbeiten: Jakub Narębski hat mehr Git-Fu. Der folgende, viel einfachere Befehl funktioniert perfekt:

git describe --tags

(Oder ohne --tags, Wenn Sie ein mit Anmerkungen versehenes Tag ausgecheckt haben. Mein Tag ist leichtgewichtig, daher brauche ich die --tags.)

Die ursprüngliche Antwort lautet :

git describe --exact-match --tags $(git log -n1 --pretty='%h')

Jemand mit mehr Git-Fu könnte eine elegantere Lösung haben ...

Dies macht sich die Tatsache zunutze, dass git-log Das Protokoll beginnend mit dem ausgecheckten Protokoll ausgibt. %h Gibt den abgekürzten Hash aus. Dann findet git describe --exact-match --tags Das Tag (leichtgewichtig oder mit Anmerkungen versehen), das genau diesem Commit entspricht.

Bei der obigen $() -Syntax wird davon ausgegangen, dass Sie bash oder ähnliches verwenden.

276
bstpierre

Das hat bei mir geklappt git describe --tags --abbrev=0

54
M K

Zeige alle Tags des aktuellen HEAD (oder Commit)

git tag --points-at HEAD
33
George Pavelka

git describe ist ein Porzellan Befehl, den Sie vermeiden sollten:

http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html

Stattdessen habe ich verwendet:

git name-rev --tags --name-only $(git rev-parse HEAD)
22
Greg

Wenn Sie ein Tag auschecken, haben Sie das, was "losgelöster Kopf" genannt wird. Normalerweise ist Gits HEAD commit ein Zeiger auf den Zweig, den Sie gerade ausgecheckt haben. Wenn Sie jedoch etwas anderes als einen lokalen Zweig auschecken (z. B. ein Tag oder einen entfernten Zweig) Sie haben einen "abgetrennten Kopf" - Sie befinden sich nicht wirklich auf einem Ast. Sie sollten keine Commits machen, während Sie einen abgetrennten Kopf haben.

Sie können ein Tag auschecken, wenn Sie keine Änderungen vornehmen möchten. Wenn Sie nur den Inhalt von Dateien untersuchen oder Ihr Projekt aus einem Tag erstellen möchten, ist es in Ordnung, git checkout my_tag und arbeite mit den Dateien , solange du keine Commits machst . Wenn Sie Dateien ändern möchten, sollten Sie einen Zweig basierend auf dem Tag erstellen:

$ git checkout -b my_tag_branch my_tag

erstellt einen neuen Zweig mit dem Namen my_tag_branch ab my_tag. Es ist sicher, Änderungen an diesem Zweig vorzunehmen.

21
mipadi

git log --decorate

Hier erfahren Sie, welche Refs auf das aktuell ausgecheckte Commit verweisen.

7
chriswatrous