2013-09-06 16 views
13

Come posso ottenere il nome del ramo o del tag corrente per la mia copia di lavoro? Ho visto riferimenti che indicano che rev-parse --abbrev-ref HEAD darà il nome del ramo, ma questo non funziona se il checkout è di un tag, nel qual caso restituisce semplicemente "HEAD". Ho bisogno di ottenere in qualche modo il nome del tag di queste revisioni.Get git current branch/tag name

Per essere chiari, io voglio uno dei due nomi possibili:

  1. Se la cassa corrente è il capo di un ramo, voglio che il nome del ramo
  2. Se si tratta di una testa staccata, voglio il nome del tag (sul presupposto c'è un tag)
+0

possibile duplicato di [Ottieni tag git della revisione estratta?] (Http://stackoverflow.com/questions/15703253/get-git-tag-of-checked-out-revision) –

+0

@FelixKling, il problema è davvero per ottenere un risultato unificato. Se ti capita di controllare un ramo che ha un tag, l'altro metodo dà il tag. Quindi la domanda include come determinare se effettivamente si tratta di una revisione di HEAD/tag distaccata. –

+1

cosa ne pensi di questo? http://stackoverflow.com/questions/1404796/how-to-get-the-latest-tag-name-in-current-branch-in-git – smcg

risposta

38

Penso che si desidera questo:

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

Ciò produrrà il valore di HEAD, se non è scollegato, o emetterà il nome del tag, se è una corrispondenza esatta. Ti mostrerà un errore altrimenti.