152 votes

Comment puis-je lister toutes les balises de mon dépôt Git en fonction de la date de leur création ?

J'ai besoin d'un moyen de lister toutes les balises de mon système par date de création mais je ne suis pas sûr de pouvoir obtenir ces données via git-log. Des idées ?

2 votes

Voulez-vous dire que vous voulez obtenir la liste de tous les tags dans l'ordre de leurs dates de création ?

3 votes

FYI (1.) Cette question sert à répertorier les balises ANNOTÉES par date. (2.) Pour répertorier les tags LIGHTWEIGHT par date, aller ici . (3.) Pour un rappel utile sur la différence entre les balises légères et annotées de Git, aller ici .

0 votes

@TrevorBoydSmith : Ce n'est pas tout à fait correct. La différence est que (2) liste toutes les balises par date d'engagement de la engagement marqué alors que cette page donne des solutions qui sont classées par date indiquée (mais seulement pour les balises annotées, car git ne stocke pas la date d'étiquetage pour les balises légères).

214voto

Josh Lee Points 53741

Le tri par date de création des balises fonctionne avec les balises annotées et légères :

git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags

12 votes

Génial. git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags a fait exactement ce dont j'avais besoin. Merci !

22 votes

Une solution de @DrorCohen qui fonctionne pour les balises légères : stackoverflow.com/questions/6900328/ . En collant ici pour une référence facile : git log --tags --simplify-by-decoration --pretty="format:%ai %d"

6 votes

Peut utiliser %(contents) pour ajouter une annotation si nécessaire, par ex. git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags

64voto

VonC Points 414372

Git 2.8 (mars 2016) documente une autre option remontant à git 1.4.4 (Oct2006) .
Voir commettre e914ef0 (05 Jan 2016) par Eric Wong ( ele828 ) .
(fusionné par Junio C Hamano -- gitster -- en commit 108cb77 , 20 janvier 2016)

Voir le nouveau Documentation/git-for-each-ref.txt

Pour les objets de type commit et tag, la fonction spéciale creatordate y creator correspondront à la date appropriée ou au tuple nom-email-date de la committer o tagger en fonction du type d'objet.
Ils sont destinés à travailler sur un mélange de balises annotées et légères. .

Donc, en utilisant creatordate fonctionne avec des étiquettes :

git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }' 

Ou :

git tag --sort=-creatordate 

Comme je le détaille dans " Comment trier les tags git par ordre de chaîne de version de la forme rc-X.Y.Z.W ? ", vous pouvez ajouter un ordre de tri à git tag (depuis Git 2.0 juin 2014).

Cet ordre de tri comprend comme nom du champ (listé dans git for-each-ref ) taggerdate . Cela permet git tag --sort=taggerdate (mentionné par DarVar en dessous de )
À titre d'exemple, dans le git/git repo il énumérera les v2.10.0 le dernier tag :

v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0

L'ordre par défaut ne serait pas ( git tag ):

v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0

37voto

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

Egalement une belle sortie de (sans champ de date) :

git log --tags --decorate --simplify-by-decoration --oneline

Pour voir l'historique complet avec les dépendances et les commits linéaires (seulement les événements essentiels, comme le balisage et le branching/merging) :

git log --graph --decorate --simplify-by-decoration --oneline --all

20voto

elboulangero Points 526

Ce one-liner affiche les dates et les balises :

git tag --format='%(creatordate:short)%09%(refname:strip=2)'

Sortie :

2015-09-27      v0.1.0
2019-10-22      v0.10.0
2020-07-08      v0.12.0
2015-11-18      v0.2.0
2020-12-08      v1.0.0

Par défaut, les balises sont triées par ordre lexicographique. Si vous préférez trier par date :

git tag --format='%(creatordate:short)%09%(refname:strip=2)' --sort=creatordate

Sortie :

2015-09-27      v0.1.0
2015-11-18      v0.2.0
2019-10-22      v0.10.0
2020-07-08      v0.12.0
2020-12-08      v1.0.0

Voir Réponse de VonC pour plus de détails.

17voto

Zamicol Points 3297
git tag --sort=-taggerdate

Selon la page de manuel, "Préfixe - pour trier dans l'ordre décroissant de la valeur. "

git tag utilise les mêmes clés de tri que git-for-each-ref qui est l'endroit où les clés sont documentées.

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