Показать теги git, отсортированные по дате

Как теги git в хронологическом порядке? (сначала последние теги)

git tag отображается только в алфавитном порядке.

6 ответов


правильный ответ:

git tag --sort=-taggerdate

taggerdate соответствующее поле. Согласно git tag man page:

префикс - сортировка в порядке убывания значения.

git tag использует те же ключи сортировки, что и git-for-each-ref, где задокументированы ключи сортировки.


в git 2.3.3 я могу просто сделать это, чтобы отсортировать их по дате:

git tag --sort version:refname

просто помните:

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

легче читать результат:

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

есть хороший однострочный я нашел, что Уилл показывает сообщение тега даты, автора тега и делает хорошую работу с расположением столбцов.

git for-each-ref --sort=taggerdate --format '%(tag)_,,,_%(taggerdate:raw)_,,,_%(taggername)_,,,_%(subject)' refs/tags \
 | awk 'BEGIN { FS = "_,,,_"  } ; { t=strftime("%Y-%m-%d  %H:%M",); printf "%-20s %-18s %-25s %s\n", t, , ,   }'

вывод будет выглядеть так:

...
2015-08-03  10:56     v1.51              Release v1.51             FirstName LastName
2015-08-10  16:12     v1.52              Release v1.52             Jane Doe

кредит на этот сайт


поддерживаемые типы, когда дело доходит до сортировки с git tag являются:

  • refname сортировка в лексикографическом порядке
  • version:refname или v:refname - это сортировка по версии

решение вашей проблемы будет выглядеть так: git tag -l --sort version:refname

есть еще много полезных команд, связанных с тегами git, обязательно проверьте в этой статье для более подробной информации.


попробуй такое

 git log --tags --decorate --simplify-by-decoration | grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//'