2009-09-24 8 views
56

¿Hay alguna manera de obtener la etiqueta asociada con un número de confirmación en Git?Encontrar información de etiqueta para una confirmación determinada

Para lanzamientos suelo etiquetar algo como v1.1.0. Durante mi script de construcción, estoy creando un archivo fwVersion.c que contiene la información git actual. Actualmente, tengo información de confirmación y de sucursal en el archivo, pero me gustaría agregar la etiqueta.

¿Esto es posible?

Respuesta

73

revise la documentación de git describe. Encuentra la etiqueta más cercana a una confirmación determinada (es decir, una etiqueta que apunta a un antecesor de la confirmación) y describe esa confirmación en términos de la etiqueta.

Si sólo desea saber si la confirmación es apuntado por una etiqueta entonces se puede comprobar la salida de:

git describe --exact-match <commit-id> 
+0

Esto es perfecto, gracias !! – wes

+13

'git describe --tags ' para etiquetas no anotadas –

+1

Me encanta esto. Spefically, Me encanta que puedo conseguir una legible por humanos de la versión actual: 'git describir --all --exact-partido \ 'git CABEZA rev-parse \' ' – dsummersl

12

Usted puede encontrar esta información en el manual

git tag --contains <commit> 
+2

Esto mostrará una lista de todas las etiquetas que contienen la confirmación dada (es decir, etiquetas que apuntan a los hijos de la confirmación dada), por lo que no necesariamente va a dar una sola etiqueta para una confirmación determinada o información sobre la etiqueta más cercana , a menos que la lista solo contenga una única confirmación. –

+3

Como dice Charles Bailey anteriormente, eso no es exactamente lo que estoy buscando. Tal vez deberías RTFM :) – wes

+1

Bueno, perdón por la respuesta incorrecta. Cuando lo revisé, pareció hacer lo que me pedías. Hice RTFM, solo estaba resolviendo el problema equivocado. Hope Bailey ofreció una solución que te ayuda. – dharga

46

Si lo que quiere es la primera etiqueta que contiene el comprometerse a continuación:

git describe --contains <commit> 

da la mejor respuesta IMO. Si tiene etiquetas frecuentes que usar "etiqueta de git --contains" en una confirmación anterior en un repositorio grande puede tomar un tiempo para ejecutarse y le da todas las etiquetas que contienen esa confirmación.

Esta forma de git describe se ejecuta muy rápido y le da un único valor de salida que es la primera etiqueta que contiene el compromiso y la distancia de su confirmación.

6

Lo siento, no sabía cómo acaba de añadir un comentario por lo que la publicación de una respuesta ... he encontrado la combinación de ambas tapas responder a darme lo que quería de esta manera:

git describe --tags --exact-match <commit-id> 

Esto da usted la (s) etiqueta (s) SÓLO para esa confirmación y para las que no tienen anotación. Útil cuando desee buscar etiquetas y no preocuparse por quitar el formato (por ejemplo, para Jenkins).

por ejemplo. $ git describe --tags --exact-match head~2

le ofrece:

$ ReleaseBeta 
8

¿Qué tal esto?

git tag --points-at <commit-id>

Se le da todas las etiquetas del commit dado cuenta (mientras que git describe sólo le da uno), y no incluye las etiquetas de descendiente se compromete (como lo hace git tag --contains).

Cuestiones relacionadas