Как перечислить все теги вместе с полным сообщением в git?

Я хочу, чтобы git отображал все теги вместе с полным сообщением аннотации или фиксации. Что-то вроде этого близко:

git tag -n5

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

Думаю, я могу просто использовать очень большое число. Какое максимальное число я могу использовать здесь? Это то же самое на каждом компьютере?

ОБНОВЛЕНИЕ. У меня было много времени, чтобы подумать об этом, и теперь я думаю, что я не обязательно хочу показывать все сообщение, если оно необычно длинное. Кажется, что-то вроде этого отлично работает для меня:

git tag -n99

Если сообщение тега действительно длиннее 99 строк, я не хочу его видеть. Но git чрезвычайно сложный и гибкий. В каких случаях это не было бы лучшим решением? Я заметил, что многие из опубликованных решений использовали -l otion, но разве это не просто указание шаблона для поиска?

Ответ 1

git tag -n99

Короткий и сладкий. Это приведет к отображению до 99 строк из сообщения аннотации/фиксации. Вот ссылка на официальную документацию для тега git: http://git-scm.com/docs/git-tag

Ответ 2

Попробуйте это, он перечислит все теги вместе с аннотациями и 9 строк сообщения для каждого тега:

git tag -n9

также может использовать

git tag -l -n9

если перечислены конкретные теги:

git tag -l -n9 v3.*

(например, команда выше будет отображать теги, начинающиеся с "v3." )

-l, --list          Введите теги с именами, которые соответствуют заданному шаблону (или все, если шаблон не указан).          Выполнение тега git без аргументов также перечисляет все теги. Шаблон - это шаблон оболочки          (то есть, с использованием fnmatch (3)). Можно указать несколько шаблонов; если любой из них          соответствует, тег показан.

Ответ 3

Отклик Longhor answer (используя git show) близок к тому, что нужно в вопросе. Тем не менее, он также включает в себя фиксацию, указанную тегом, вместе с полным патчем для этой фиксации. Поскольку фиксация может быть несколько не связана с тегом (это только одна фиксация, которую тег пытается захватить), это может быть нежелательным. Я считаю, что следующее немного лучше:

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

Ответ 4

Это далеко не красиво, но вы можете создать script или псевдоним, который делает что-то вроде этого:

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

Ответ 5

Только последнее сообщение тега:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

Ответ 6

Я предпочитаю делать это в командной строке, но если вы не против веб-интерфейса и используете GitHub, вы можете посетить https://github.com/user/repo/tags и нажать "..." рядом с каждым тегом, чтобы отобразить его аннотацию.