Как перечислить все теги Git?

675

В моем хранилище я создал теги, используя следующие команды.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

Как вы перечисляете все теги в хранилище?

Лео Леопольд Герц 준영
источник

Ответы:

955
git tag

должно быть достаточно. Посмотреть git tagсправочную страницу


У вас также есть:

git tag -l <pattern>

Перечислите теги с именами, которые соответствуют заданному шаблону (или всем, если шаблон не указан).
Ввод "git tag" без аргументов, также перечисляет все теги.


Совсем недавно (« Как отсортировать теги git? », Для Git 2.0+)

git tag --sort=<type>

Сортировка в определенном порядке.

Поддерживаемый тип:

  • "refname " (лексикографический порядок),
  • " version:refname" или " v:refname" (имена тегов рассматриваются как версии).

Предварительно добавьте «-», чтобы изменить порядок сортировки.


Это перечисляет оба:

  • аннотированные теги : полные объекты, хранящиеся в базе данных Git. Они контрольные суммы; содержать имя тега, адрес электронной почты и дату; иметь сообщение с тегами; и может быть подписано и проверено с помощью GNU Privacy Guard (GPG).
  • легкие теги : простой указатель на существующий коммит

Примечание: git ready статья о тегировании не одобряет легкий тег.

Без аргументов тег git создает «легкий» тег, который в основном является ветвью, которая никогда не перемещается.
Однако облегченные теги по-прежнему полезны, возможно, для маркировки известной хорошей (или плохой) версии или набора коммитов, которые вам, возможно, придется использовать в будущем.
Тем не менее, вы, вероятно, не хотите нажимать такие теги .

Обычно вы хотите, по крайней мере, передать параметр -a, чтобы создать неподписанный тег, или подписать тег с помощью ключа GPG с помощью параметров -s или -u.


При этом, Чарльз Бэйли указывает, что « git tag -m "..."» на самом деле подразумевает правильный (без знака аннотированный) тег (опция -a'), а не легкий. Таким образом, вы хорошо с вашей первоначальной командой.


Это отличается от:

git show-ref --tags -d

В котором перечислены теги с их коммитами (см. « Список тегов Git, отображение хэшей sha1 »).
Обратите внимание-d , чтобы разыменовать аннотированный теговый объект (который имеет свой собственный коммит SHA1) и отобразить фактический тегированный коммит.

Точно так же git show --name-only <aTag>перечислил бы тег и связанный с ним коммит.

VonC
источник
6
Вероятно, стоит добавить, что -m или -F подразумевают -a (если не -a, -s или -u предоставлены явно. Вы не можете иметь сообщение тега без создания «правильного» объекта тега.
CB Bailey
1
Примечание для себя: с этим откровением я передаю 800000 (31 августа 2018 г.) на переполнение стека через год и один месяц после достижения 700000 (6 августа 2017 г.) .
VonC
190

Для перечисления тегов я предпочитаю:

git tag -n

-nФлаг отображает первую строку сообщения аннотаций вместе с тегом, или первое сообщение фиксации строки , если тег не примеч.

Вы также можете сделать, git tag -n5чтобы показать первые 5 строк аннотации.

финн
источник
48

Также git show-refвесьма полезно, так что вы можете напрямую связать теги с соответствующими коммитами :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...
Campa
источник
1
Привыкание к Mercurial hg tagsмне нравится, что git show-refдает мне тег И ревизию.
Джастин
34

А вот как вы найдете удаленные теги:

git ls-remote --tags origin

Дмитрий Дуээле
источник
15

Попробуй сделать git tagэто должно быть достаточно, если не попытаться сделать git fetchто git tag.

тото
источник
4
Я думаю, что он имеет в виду следующее: git tagкоманды запуска должно быть достаточно, если вы просто хотите увидеть список доступных тегов. Если вы не видите некоторые теги, которые, по вашему мнению, могут существовать на удаленном компьютере, ваши локальные теги могут не синхронизироваться с удаленным. В этом случае сначала извлеките последние ссылки / заголовки с пульта git fetch, а затем фактические git tag. Я обычно запускаю однострочную строчку так: $ git fetch -p && git tagпросто чтобы быть уверенным, что я смотрю на последнее и лучшее.
demisx
11

Перечислить доступные теги в Git просто. Просто введите git tag(с необязательным -lили --list).

$ git tag
v5.5
v6.5

Вы также можете искать теги, которые соответствуют определенному шаблону.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Получение последней метки в репозитории git

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

git describe

При --abbrevустановленном значении 0команда может использоваться для поиска ближайшего tagnameбез суффикса:

git describe --abbrev=0

Другие примеры:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

Как удалить локальные теги Git, которые не существуют на удаленном

Проще говоря, если вы пытаетесь сделать что-то подобное git fetch -p -t, это не будет работать, начиная с версии git 1.9.4.

Тем не менее, есть простой обходной путь, который все еще работает в последних версиях:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags
LYES - CHIOUKH
источник
Команда, связанная с rev-list, выдала мне список, но закончилась ошибкой:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit
10

Чтобы увидеть подробности о последних доступных тегах, которые я иногда использую:

git show `git describe` --pretty=fuller
Андрей Сура
источник
6

Если вы хотите проверить имя тега локально, вам нужно перейти по пути, по которому вы создали тег (локальный путь). Означает, где вы положили свои объекты. Затем введите команду:

git show --name-only <tagname>

Он покажет все объекты под этим именем тега. Я работаю в Teradata и объект означает вид, таблица и т. Д.

Tanaya
источник
4

Вы можете перечислить все существующие теги git tagили отфильтровать список git tag -l 'v1.1.*', где *действует как подстановочный знак. Он вернет список тегов, помеченныхv1.1 .

Вы заметите, что когда вы звоните, git tagвы не можете видеть содержание ваших аннотаций. Для того, чтобы просмотреть их , вы должны добавить -nк вашей команде: git tag -n2.

$ git tag -l -n2

v1.0 выпуск версии 1.0

v1.1 выпуск версии 1.1

Команда выводит список всех существующих тегов с максимум 3 строками сообщения тега. По умолчанию -nотображается только первая строка. Для получения дополнительной информации не забудьте проверить эту статью, связанную с тегом, а также.

Неша Зорич
источник
0

Для GUI, чтобы сделать это, я только что обнаружил, что 'gitk' поддерживает именованные представления. Представления имеют несколько вариантов выбора коммитов. Один удобный вариант - поле для выбора «Все теги». Кажется, это работает для меня, чтобы увидеть теги.

OBJ
источник