2012-05-15 8 views
6

Me gustaría saber si es posible en Git recuperar una lista de etiquetas (muy similar al resultado del comando git tag), pero la lista debe limitarse solo a una determinada rama.¿Es posible que Git recupere una lista de etiquetas que solo existen en una determinada rama?

Si esto es posible, ¿alguien puede explicar cómo se hace esto? Tal vez con alguna magia de coincidencia de patrones?

+0

Puedo estar equivocado pero se requiere (poco) scripting – CharlesB

+0

No estoy seguro pero es esto lo que quieres? [etiquetas de lista contenidas por una rama] (http://stackoverflow.com/q/2381665/11343) – CharlesB

Respuesta

5

creo que esto va a hacer lo que quiere:

git log --pretty='%H' <branch> | 
    xargs -n1 git describe --tags --exact-match 2>/dev/null 

Este utiliza git log para obtener una lista de confirmaciones en una rama, y ​​luego los pasa a git describe para ver si corresponden a una etiqueta.

+1

+1, la mejor manera. se puede hacer mucho más rápido agregando '--simplify-by-decoration' a' git log', solo da commits que coinciden con un refspec para no hacer un bucle sobre * all * commits – CharlesB

+0

Oye, también estoy buscando un solución similar a esto: Acabo de publicar una pregunta en [enlace] (http://stackoverflow.com/questions/11316306/listing-the-tags-in-git-from-a-specific-branch) y luego sucedió que lea su pregunta – iDev

+0

@iDev: ¿Ha probado la solución de larsks? ¿Esto funcionó para ti? –

2

Otro enfoque sería posible con las nuevas opciones de git tag --merged (2.7+ en git, Q4 2015)

git tag --merged <abranchname> 

Ver commit 5242860, ... (10 Sept 2015) por Karthik Nayak (KarthikNayak).
(Fusionado por Junio C Hamano -- gitster -- en commit 8a54523 05 Oct 2015)

tag.c: aplicar '--merged' y '--no-fusionada' opciones

Use '' ref-filter APIs para implementar las opciones '--merged' y '--no-merged' en 'tag.c'.

  • La opción '--merged' permite al usuario solo listar las etiquetas fusionadas en la confirmación nombrada.
  • La opción '--no-merged' permite al usuario solo listar las etiquetas que no se fusionaron en la confirmación nombrada.

Si no se proporciona ningún objeto, asume HEAD como el objeto.

Cuestiones relacionadas