2016-12-07 2 views
4

Я пытаюсь получить последний тег git из определенной точки в моем дереве.Получить последний тег git из текущей фиксации

Дерево выглядит следующим образом:

* 334322c|2016-12-06| (tag: 0.1265, tag: 0.1264) (18 hours ago) 
* 739392e|2016-12-06| (HEAD -> testbranch, tag: 0.1263, tag: 0.1262) (19 hours ago) 
* 8ec1add|2016-12-06| (tag: 0.1261, tag: 0.1260, tag: 0.1259) (20 hours ago) 
* 5b2667b|2016-12-06| (tag: 0.1258) (21 hours ago) 
* c7ff4bc|2016-12-06| (tag: 0.1257, tag: 0.1256) (22 hours ago) 

0.1263 это мерзавец тег Я ищу.

Когда на 739392e с использованием git describe --tags возвращается только 0.1262, который является первым тегом на этом коммите, и я не получаю всех кандидатов.

Когда на 739392e с использованием git describe --tags $(git rev-list --tags --max-count=1) возвращается 0.1265, последний тег на дереве (независимо от того, где находится ГОЛОВА).

+0

Вы пробовали это: git log -1 --format =% TAG_NAME –

+0

что такое '-format =% TAG_NAME'? это доступные заполнители: https://git-scm.com/docs/pretty-formats – Rotemmiz

+0

'git describe --tags' дает один из кандидатов. Перечислите все теги, проверьте каждый, если он указывает на кандидата. – ElpieKay

ответ

0

Вы можете использовать git tagsub-command с вариантом списка, указывая на конкретные фиксации вы проверяете:

git tag -l --points-at <commit|object> 

Если вы используете Git 2.0 или выше, он имеет --sort вариант, который должен позволить вам сортировать результаты по тегу по дате, по убыванию.

+0

Обратите внимание, что сортировка будет работать только для * аннотированных * тегов (у легковесных тегов нет отдельной даты). Без даты тега нет очевидного правильного порядка. Быстрый, который новее, тег: CODE-NIGHTMARE-GREEN' или 'tag: CODE-GOD-GAME-BLACK'? :-) – torek

Смежные вопросы