¿Cómo puedo enumerar todas las etiquetas en mi repositorio de Git para la fecha en que se crearon?
128
Necesito alguna forma de enumerar todas las etiquetas en mi sistema para la fecha en que se crearon, pero no estoy seguro de si puedo obtener esos datos a través de git-log. Ideas?
¿Quiere decir que desea obtener la lista de todas las etiquetas en orden de fechas de creación?
lithuak
3
FYI (1.) Esta pregunta es para enumerar etiquetas ANOTADAS por fecha. (2.) Para enumerar etiquetas LIGERAS por fecha, vaya aquí . (3.) Para un recordatorio útil sobre cuál es la diferencia entre las etiquetas livianas y anotadas de Git, vaya aquí .
Trevor Boyd Smith
@TrevorBoydSmith: Eso no es del todo correcto. La diferencia es que (2) enumera todas las etiquetas por fecha de confirmación de la confirmación etiquetada , mientras que esta página ofrece soluciones que ordenan por fecha etiquetada (aunque solo para etiquetas anotadas, ya que git no almacena la fecha etiquetada para etiquetas ligeras).
David P
Respuestas:
174
La clasificación por fecha de creación de etiquetas funciona con etiquetas anotadas y ligeras:
Increíble. git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagsHice exactamente lo que necesitaba. ¡Gracias!
Jon Ursenbach
21
Una solución de @DrorCohen que funciona para etiquetas livianas: stackoverflow.com/questions/6900328/… . Pegar aquí para una referencia fácil: git log --tags --simplify-by-decoration --pretty = "format:% ai% d"
Gilead
55
Se puede usar %(contents)para agregar anotaciones si es necesario, por ejemplogit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
Tim Diggins
77
O incluso un poco más limpio:git for-each-ref --sort=taggerdate --format '%(tag)'
Baris Wanschers
44
--sort=creatordatefunciona para etiquetas anotadas y no anotadas, pero --sort=taggerdatesolo parece funcionar con etiquetas anotadas. probado usandogit version 2.16.3
Para los objetos de confirmación y etiquetado, los
campos especiales creatordatey creatorcorresponderán a la fecha o tupla de nombre-correo-fecha apropiada de los campos committero taggersegún el tipo de objeto. Estos están destinados a trabajar en una combinación de etiquetas anotadas y ligeras .
Muchas gracias. Me preguntaba por qué algunas fechas estaban vacías. Ya sospechaba de etiquetas livianas. ¡Me alegro de no tener que volver a crear las etiquetas gracias a creatordate!
Para gente perezosa: git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"y funciona mejor para mí.
Mateusz
1
Tenga en cuenta que esto está ordenado por la fecha de confirmación, no la fecha en que se crearon las etiquetas. La respuesta (actualmente) mejor valorada de Josh Lee ordena por la fecha en que se creó la etiqueta.
Nathanial Woolls
13
git tag --sort=-taggerdate
De acuerdo con la página del manual, "Prefijo - para ordenar en orden descendente del valor".
git tagutiliza las mismas claves de clasificación que git-for-each-ref, que es donde se documentan las claves.
Este es probablemente el más correcto basado en la pregunta. Aquí está el enlace a los documentos que describen los posibles campos de clasificación: git-scm.com/docs/git-for-each-ref
prasanthv
Esta respuesta no tiene en cuenta las etiquetas livianas, ya que tienen "taggerdate" vacía. Otras respuestas con "creatordate" son más precisas.
Morhook
13
Este one-liner muestra fechas y etiquetas sin ningún problema.
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
Si no le gusta cómo se ordenan las etiquetas de forma predeterminada, puede ordenar por fecha con la opción --sort=creatordate, por ejemplo. Vea la respuesta de VonC para más detalles.
Ofuscado un poco. ... En las etiquetas anotadas, 'committerdate' está vacío, mientras que en las etiquetas livianas 'taggerdate' está vacío. Entonces, como solución alternativa, '* committerdate' le dice a Git que retroceda las fechas del objeto de confirmación original cuando es liviano. ...
ingyhere
Usar 'creatordate' en su lugar debería hacer efectivamente lo mismo.
Respuestas:
La clasificación por fecha de creación de etiquetas funciona con etiquetas anotadas y ligeras:
fuente
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
Hice exactamente lo que necesitaba. ¡Gracias!%(contents)
para agregar anotaciones si es necesario, por ejemplogit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
funciona para etiquetas anotadas y no anotadas, pero--sort=taggerdate
solo parece funcionar con etiquetas anotadas. probado usandogit version 2.16.3
Git 2.8 (marzo de 2016) documenta otra opción que se remonta a git 1.4.4 (octubre de 2006) .
Ver commit e914ef0 (05 de enero de 2016) por Eric Wong (
ele828
) .(Fusionada por Junio C Hamano -
gitster
- en commit 108cb77 , 20 ene 2016)Mira lo nuevo
Documentation/git-for-each-ref.txt
Entonces usando
creatordate
obras con etiquetas:O:
Como detallo en " ¿Cómo ordenar las etiquetas git por orden de cadena de versión del formulario rc-XYZW? ", Puede agregar un orden de clasificación a
git tag
(desde Git 2.0 de junio de 2014).Ese orden de clasificación incluye como nombre de campo (enumerado en
git for-each-ref
) taggerdate . Eso permitegit tag --sort=taggerdate
(mencionado por DarVar a continuación )Como ejemplo, en el
git/git
repositorio mostrará lav2.10.0
última etiqueta:El orden predeterminado no (
git tag
):fuente
creatordate
!También buena salida de (sin campo de fecha):
Para ver el historial completo con dependencias y confirmaciones lineales rayadas (solo eventos esenciales, como etiquetado y ramificación / fusión):
fuente
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
y funciona mejor para mí.De acuerdo con la página del manual, "Prefijo - para ordenar en orden descendente del valor".
git tag
utiliza las mismas claves de clasificación quegit-for-each-ref
, que es donde se documentan las claves.fuente
Este one-liner muestra fechas y etiquetas sin ningún problema.
Salida:
Si no le gusta cómo se ordenan las etiquetas de forma predeterminada, puede ordenar por fecha con la opción
--sort=creatordate
, por ejemplo. Vea la respuesta de VonC para más detalles.fuente
Para tener etiquetas anotadas y etiquetas livianas ordenadas por completo, según la fecha de confirmación, estoy usando:
Este comando enumerará todas las etiquetas y el ID del objeto de confirmación asociado, en orden cronológico.
fuente
Con git
version 2.10.0.windows.1
git tag --sort=taggerdate
fuente
Lo siguiente se basa en el compromiso, por lo que no importa si tiene información de fecha con el compromiso:
La respuesta anterior de Josh Lee se basa en una fecha de etiqueta para obtener el orden correcto.
fuente
tac
, podría cambiarlo amore
. De todos modos su comando funcionó muy bien, ¡gracias!Sobre la base de los métodos mencionados anteriormente, también quería ver la fecha de etiqueta real en la lista, por lo que mi versión en uso es:
fuente