Как может я перечислять теги, содержавшие данным ответвлением, противоположностью:
git tag --contains <commit>
Который "только теги списка, которые содержат указанную фиксацию".
Если что-то вроде этого не существует, как я тестирую, содержится ли фиксация другой фиксацией так, чтобы я мог написать сценарий этого?
Я мог сделать это:
commit=$(git rev-parse $branch)
for tag in $(git tag)
do
git log --pretty=%H $tag | grep -q -E "^$commit$"
done
Но я надеюсь, что существует лучший путь, поскольку это могло бы занять много времени в репозитории со многими тегами и фиксациями.
Это может быть похоже на то, что вы хотите:
git log --simplify-by-decoration --decorate --pretty=oneline "$committish" | fgrep 'tag: '
Но более распространенная ситуация - просто найти самый последний тег:
git describe --tags --abbrev=0 "$committish"
- теги
будут искать по легким тегам, не используйте его, если вы хотите рассматривать только аннотированные теги. - abbrev = 0
, если вы хотите также видеть обычный суффикс «количество« коммитов сверху »и сокращенный хэш» (например, v1.7.0-17-g7e5eb8). git description (или его вариант) может быть тем, что вы ищете.