2012-01-09 8 views

Respuesta

90

¿Qué tal esto?

git show-ref --tags 
+5

Nota, esto no diferenciará entre etiquetas ligeras y anotadas. Para las etiquetas livianas, mostrará la confirmación y para las etiquetas anotadas mostrará el resumen del objeto de etiqueta. –

+12

Para mostrar una lista de etiquetas con referencias sin referencia (en el caso de etiquetas con anotaciones) use 'git show-ref --tags -d'. Las etiquetas dereferenciadas se postfijan con un '^ {}'. –

3

Las etiquetas deben estar firmadas y/o enviadas. Las etiquetas livianas no tienen objetos SHA1 y son solo referencias. De lo contrario, intente git show.

+1

'git show tag1' ' git show tag2' funciona mejor para mí, gracias :) –

7

Para obtener el SHA1 que remite algún tipo de ref (rama, la etiqueta ...) utilizan git rev-parse:

git rev-parse tag1^0 tag2^0 

sólo imprimirá las SHA1s completos, en líneas separadas. El sufijo ^0 es una sintaxis especial, para asegurar que esto imprimirá el SHA1 de la confirmación apuntada por la etiqueta, ya sea que esté anotada o no. (Las etiquetas anotadas son objetos por derecho propio, que contienen un puntero a una confirmación junto con los metadatos. Si usted sabe que una etiqueta está anotada y desea la etiqueta SHA1, simplemente deje fuera el ^0.)

Por supuesto, a menudo no deberías hacer esto, ya que cualquier comando de Git que acepte un SHA1 también debería aceptar una etiqueta.

+0

La mejor respuesta aquí, gracias @Jefromi. Tenga en cuenta que en un shell cmd de Windows, cualquier comando git que use^necesita ser citado: p. Ej. git rev-parse "tag1^0" "tag2^0". – yoyo

8

Tenía una pregunta similar, pero quería el hash de (varias) etiquetas específicas. He descubierto que "show-ref" tendrá una lista de etiquetas, por lo que este hace el trabajo:

% git show-ref v3.4.0.13-ga v3.4.0.13-base 
bfc7747c4cf67a4aacc71d7a40337d2c3f73a886 refs/tags/v3.4.0.13-base 
79ba365e75a4f9cee074d25a605a26acb660b7de refs/tags/v3.4.0.13-ga 

Sin embargo, algunos experimentos con "show git" dio lugar a este comando:

% git show --summary --oneline --decorate v3.4.0.13-ga v3.4.0.13-base 
79ba365 (tag: v3.4.0.13-ga, rhins013a) commit message the first 
bfc7747 (tag: v3.4.0.13-base) commit message the second 

Desde Estoy mucho más familiarizado con el uso de "mostrar" que "mostrar-ref", me parece que este último es más fácil de recordar y más útil también.

Vea también el buen resumen en How to tell which commit a tag points to in Git?.

10

Las etiquetas anotadas tienen su propia SHA-1, por lo que debemos desreferenciarlas. Sin embargo, las etiquetas ligeras no se pueden desreferenciar, ya que apuntan a una confirmación. Para resolver, hay que enumerar los dos y filtrar los objetos cometer:

git for-each-ref --sort -v:refname --format '%(objectname) %(objecttype) %(refname) 
%(*objectname) %(*objecttype) %(*refname)' refs/tags | grep commit 

resultado con etiquetas ligeros:

589610a0114a375f1bff716dd308cf8df08571d3 commit refs/tags/1.4.9 
e25952a74bf379783944bef9c4fcc60600cb764c commit refs/tags/1.4.8 
19b1c2c96a9678837f57eac86cf3d22842731510 commit refs/tags/1.4.7 
7208212a55c4a56af34da781a7f730d6ddd557a1 commit refs/tags/1.4.6 
62ec20337a4125496bd4f56288f3283963153194 commit refs/tags/1.4.5 

resultado con etiquetas comentadas:

e2b2d6a172b76d44cb7b1ddb12ea5bfac9613a44 commit refs/tags/v2.11.0-rc3^{} 
1310affe024fba407bff55dbe65cd6d670c8a32d commit refs/tags/v2.11.0-rc2^{} 
3ab228137f980ff72dbdf5064a877d07bec76df9 commit refs/tags/v2.11.0-rc1^{} 
1fe8f2cf461179c41f64efbd1dc0a9fb3b7a0fb1 commit refs/tags/v2.11.0-rc0^{} 
454cb6bd52a4de614a3633e4f547af03d5c3b640 commit refs/tags/v2.11.0^{} 
+0

El uso de 'git log --tags --oneline --no-walk' también afectará a las etiquetas anotadas automáticamente. :) – ADTC

21

El comando git tag está poco desarrollado . Se desea mucho, pero falta, como los detalles completos de las etiquetas y las etiquetas en el orden del historial de compromisos.

Me gusta este lugar, que proporciona exactamente lo que quiero, pero no puede obtener de git tag:

git log --oneline --decorate --tags --no-walk 

Esto da una vista muy bonita código de colores de las etiquetas en el orden cronológico inverso (como se estaría en el registro completo). De esta forma, no solo verá las etiquetas, también verá los valores hash abreviados y los mensajes de confirmación de las confirmaciones de etiquetas.


he alias a git t y git tags de la siguiente manera:

git config --global alias.tags "log --oneline --decorate --tags --no-walk" 
git config --global alias.t "!git tags" 

Nota: que tenía que usar la redirección de fiesta para git t como Git no admite llamar a una alias de otro alias (que es un fastidio).


Si quieres ver la fecha y la hora de cometer, intentar:

git log --tags --no-walk --date=iso-local --pretty='%C(auto)%h %cd%d %s' 

Puede utilizar otros formatos de fecha en la opción --date, así como totalmente controlar la salida para que coincida con su sabor único en la opción --pretty. Ambas opciones están bien documentadas en el git-log Documentation.

+0

Parece una respuesta muy útil. Gracias. – Ceki

+2

Aunque no es lo que solicitó OP (mostrar confirmación ** sha1 hash **) es muy útil ya que los mensajes de confirmación también pueden ser útiles. +1 de mi parte –

+0

¡Ingenioso, gracias! –

-2
git show-ref [object] 

objeto podría ser cometió/tag/árbol/blob,

en su caso simplemente:

git show-ref [tag_name] 
0
git for-each-ref --format='%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end) %(refname)' refs/tags 

Esto da una lista de todas las confirmaciones de las etiquetas. Las etiquetas anotadas son desreferenciadas. Enviar las gracias here.