¿Cómo enumerar todas las etiquetas Git?

675

En mi repositorio, he creado etiquetas usando los siguientes comandos.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

¿Cómo enumeras todas las etiquetas en el repositorio?

Léo Léopold Hertz 준영
fuente

Respuestas:

955
git tag

debería ser suficiente. Ver git tagpágina del manual


Tu también tienes:

git tag -l <pattern>

Enumere etiquetas con nombres que coincidan con el patrón dado (o todos si no se da ningún patrón).
Al escribir "git tag" sin argumentos, también se enumeran todas las etiquetas.


Más recientemente (" ¿Cómo ordenar las etiquetas git? ", Para Git 2.0+)

git tag --sort=<type>

Ordenar en un orden específico.

El tipo admitido es:

  • " refname" (orden lexicográfico),
  • " version:refname" o " v:refname" (los nombres de etiqueta se tratan como versiones).

Anteponga "-" para invertir el orden de clasificación.


Eso enumera ambos:

  • Etiquetas anotadas : objetos completos almacenados en la base de datos Git. Son suma de verificación; contener el nombre del etiquetador, correo electrónico y fecha; tener un mensaje de etiquetado; y se puede firmar y verificar con GNU Privacy Guard (GPG).
  • Etiquetas livianas : puntero simple a una confirmación existente

Nota: el artículo de git ready sobre etiquetado desaprueba la etiqueta ligera.

Sin argumentos, git tag crea una etiqueta "ligera" que es básicamente una rama que nunca se mueve.
Sin embargo, las etiquetas livianas siguen siendo útiles, tal vez para marcar una versión buena (o mala) conocida, o un montón de confirmaciones que puede necesitar usar en el futuro.
Sin embargo, probablemente no desee presionar este tipo de etiquetas .

Normalmente, desea al menos pasar la opción -a para crear una etiqueta sin firmar, o firmar la etiqueta con su clave GPG a través de las opciones -s o -u.


Dicho esto, Charles Bailey señala que " git tag -m "..."en realidad implica una etiqueta (opción" anotada) adecuada -a, y no una etiqueta liviana. Entonces eres bueno con tu comando inicial.


Esto difiere de:

git show-ref --tags -d

Que enumera las etiquetas con sus confirmaciones (consulte " Lista de etiquetas Git, muestre los hash de confirmación sha1 ").
Observe el -dpara desreferenciar el objeto de etiqueta anotado (que tiene su propio compromiso SHA1) y mostrar el compromiso etiquetado real.

Del mismo modo, git show --name-only <aTag>enumeraría la etiqueta y la confirmación asociada.

VonC
fuente
66
Probablemente valga la pena agregar que -m o -F implica -a (si no se proporcionan explícitamente los valores de -a, -s o -u. No puede tener un mensaje de etiqueta sin crear un objeto de etiqueta 'adecuado'.
CB Bailey
1
Nota personal: con este voto positivo, paso 800000 (31 de agosto de 2018) en Stack Overflow, un año y un mes después de llegar a 700000 (6 de agosto de 2017) .
VonC
190

Para enumerar etiquetas prefiero:

git tag -n

La -nbandera muestra la primera línea del mensaje de anotación junto con la etiqueta, o la primera línea de mensaje de confirmación si la etiqueta no está anotada.

También puede hacer git tag -n5para mostrar las primeras 5 líneas de la anotación.

finlandés
fuente
48

También git show-refes bastante útil, de modo que puede asociar directamente etiquetas con confirmaciones correspondientes :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...
Campa
fuente
1
Al estar acostumbrado a Mercurial, hg tagsme gusta eso git show-refme da la etiqueta Y la revisión.
Justin
34

Y así es como encuentras las etiquetas remotas:

git ls-remote --tags origin

Dimitri Dewaele
fuente
15

Intenta hacer git tagque sea suficiente si no intenta hacerlo git fetchentonces git tag.

toto
fuente
44
Creo que lo que quiere decir es esto: ejecutar un git tagcomando debería ser suficiente si solo desea ver una lista de etiquetas disponibles. Si no puede ver algunas etiquetas que cree que pueden existir en el control remoto, es posible que sus etiquetas locales no estén sincronizadas con el control remoto. En este caso, busque primero las últimas referencias / cabezas desde el control remoto git fetch, seguido de las reales git tag. Por lo general, ejecuto una línea como esta: $ git fetch -p && git tagsolo para asegurarme de que estoy viendo lo último y lo mejor.
Demisx
11

Enumerar las etiquetas disponibles en Git es sencillo. Simplemente escriba git tag(con opcional -lo --list).

$ git tag
v5.5
v6.5

También puede buscar etiquetas que coincidan con un patrón en particular.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Obteniendo la última etiqueta en el repositorio de git

El comando encuentra la etiqueta más reciente a la que se puede acceder desde una confirmación. Si la etiqueta apunta a la confirmación, solo se muestra la etiqueta. De lo contrario, sufija el nombre de la etiqueta con el número de confirmaciones adicionales en la parte superior del objeto etiquetado y el nombre abreviado del objeto de la confirmación más reciente.

git describe

Con --abbrevset to 0, el comando puede usarse para encontrar el más cercano tagnamesin ningún sufijo:

git describe --abbrev=0

Otros ejemplos:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

Cómo podar etiquetas git locales que no existen en remoto

En pocas palabras, si está intentando hacer algo como git fetch -p -testo, no funcionará comenzando con la versión git 1.9.4.

Sin embargo, hay una solución simple que todavía funciona en las últimas versiones:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags
LYES - CHIOUKH
fuente
El comando relacionado con rev-list me dio una lista, pero terminó en un error:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit
10

Para ver detalles sobre la última etiqueta disponible que a veces uso:

git show `git describe` --pretty=fuller
Andrei Sura
fuente
6

Si desea verificar el nombre de su etiqueta localmente, debe ir a la ruta donde creó la etiqueta (ruta local). Significa dónde has puesto tus objetos. Luego escriba el comando:

git show --name-only <tagname>

Mostrará todos los objetos bajo ese nombre de etiqueta. Estoy trabajando en Teradata y objeto significa vista, tabla, etc.

Tanaya
fuente
4

Puede enumerar todas las etiquetas existentes git tago puede filtrar la lista con git tag -l 'v1.1.*', donde* actúa como comodín. Devolverá una lista de etiquetas marcadas con v1.1.

Notará que cuando llama git tagno puede ver el contenido de sus anotaciones. Para obtener una vista previa debe agregar -na su comando: git tag -n2.

$ git tag -l -n2

v1.0 Versión de lanzamiento 1.0

v1.1 Versión de lanzamiento 1.1

El comando enumera todas las etiquetas existentes con un máximo de 3 líneas de su mensaje de etiqueta. Por defecto -nsolo muestra la primera línea. Para obtener más información, asegúrese de consultar también este artículo relacionado con la etiqueta .

Nesha Zoric
fuente
0

Para que una GUI haga esto, acabo de descubrir que 'gitk' admite vistas con nombre. Las vistas tienen varias opciones para seleccionar confirmaciones. Una práctica es una casilla para seleccionar "Todas las etiquetas". Eso parece funcionar para mí para ver las etiquetas.

OBJ
fuente