132 votes

Obtenir l'heure et la date des tags git

J'ai un projet qui utilise git et j'ai étiqueté toutes les versions avec une étiquette.

$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0

Mon objectif est de répertorier les versions et les dates de publication dans une interface web (date de publication = date de publication). Actuellement, nous listons toutes les versions en utilisant git tag .

Comment puis-je obtenir l'heure et la date de création de la balise (ou du commit vers lequel elle pointe) ?

125voto

Nikos C. Points 18676

Cela a toujours fonctionné pour moi :

git log --tags --simplify-by-decoration --pretty="format:%ci %d"

Consultez la section "PRETTY FORMATS" de la page de manuel git-log pour les détails de la chaîne de format si vous souhaitez un formatage différent de la date.

93voto

user4815162342 Points 27348

Utilisez le --format argument pour git log :

git log -1 --format=%ai MY_TAG_NAME

69voto

non sequitor Points 4092

Une autre option :

git for-each-ref --format="%(refname:short) | %(creatordate)" "refs/tags/*"

Ver https://git-scm.com/docs/git-for-each-ref#_field_names pour les options de format

%(creatordate) donne la date du commit pointé, pour voir la date de création de la balise utilisez %(taggerdate)

Vous pouvez incorporer la coquille directement :

$> git for-each-ref --shell --format="ref=%(refname:short) dt=%(taggerdate:format:%s)" "refs/tags/*"

ref='v1.10' dt='1483807817'
ref='v1.11' dt='1483905854'
ref='v1.12.0' dt='1483974797'
ref='v1.12.1' dt='1484015966'
ref='v1.13' dt='1484766542'
ref='v1.2' dt='1483414377'
ref='v1.3' dt='1483415058'
ref='v1.3-release' dt='' <-- not an annotated tag, just a pointer to a commit so no 'taggerdate', it would have a 'creator date'.
ref='v1.3.1' dt='1483487085'
ref='v1.4' dt='1483730146'
ref='v1.9' dt='1483802985'

30voto

Rob Shearer Points 281

Notez que les deux solutions ci-dessus vous donnent la date du commit, qui peut être très différente de la date à laquelle ce commit a été marqué pour la publication. Pour obtenir la date de la balise elle-même, vous devez trouver la balise elle-même avec rev-parse , lisez-le avec cat-file et ensuite l'analyser. Un petit pipeline :

git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'

3voto

VojtaK Points 53

Il n'y a pas d'option simple dans la commande git tag pour faire cela. J'ai trouvé plus pratique de lancer

git log --decorate=full

pour lister tous les commits, y compris les tags s'il y en a. Pour lister uniquement les commits qui sont étiquetés, utilisez

git log --decorate=full --simplify-by-decoration

Pour plus de détails, utilisez

git help log

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X