2013-09-06 13 views
13

Wie kann ich den aktuellen Zweig oder Tag-Namen für meine Arbeitskopie erhalten? Ich habe Referenzen gesehen, die angeben, rev-parse --abbrev-ref HEAD wird Zweigname geben, aber dies funktioniert nicht, wenn die Kasse eines Tags ist, in diesem Fall gibt es nur "HEAD" zurück. Ich muss irgendwie den Tag-Namen dieser Revisionen bekommen.Get Git Zweig/Tag Name

Um klar zu sein, möchte ich einen von zwei möglichen Namen:

  1. Wenn die aktuelle Kasse die HEAD eines Zweigs ist, ich die Zweignamen
  2. möge Wenn es ein abgetrenntes HEAD ist, ich will der Tag-Namen (unter der Annahme, es ist ein Tag)
+0

möglich duplikat von [Get git tag der ausgecheckten revision?] (Http://stackoverflow.com/questions/15703253/get-git-tag-of-checked-out-revision) –

+0

@FelixKling, das Problem ist wirklich darum, ein einheitliches Ergebnis zu erzielen. Wenn Sie einen Zweig mit einem Tag auschecken, gibt die andere Methode nur das Tag an. Die Frage beinhaltet also, wie man feststellen kann, ob es sich tatsächlich um eine abgekoppelte HEAD/Tag-Revision handelt. –

+1

was ist das? http://stackoverflow.com/questions/1404796/how-to-get-the-latest-tag-name-in-current-branch-in-git – smcg

Antwort

38

ich glaube, Sie dies wünschen:

git symbolic-ref -q --short HEAD || git describe --tags --exact-match 

Das gibt den Wert von HEAD aus, wenn er nicht getrennt ist, oder gibt den Tag-Namen aus, wenn es genau übereinstimmt. Andernfalls wird Ihnen ein Fehler angezeigt.