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

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

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

Как вы перечисляете все теги в репозитории?

9 ответов


git tag

должно быть достаточно. См.git tag man page


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

git tag -l <pattern>

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


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

git tag --sort=<type>

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

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

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

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


, в котором перечислены как:

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

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

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

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


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


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

git show-ref --tags -d

в котором перечислены теги с их фиксациями (см."список тегов Git, отображение хэшей фиксации sha1").
Примечание -d для разыменования аннотированного объекта тега (который имеет свой собственный commit SHA1) и отображения фактического тега совершать.

аналогично, git show --name-only <aTag> перечислит тег и связанную фиксацию.


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

git tag -n

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

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


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

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

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...

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

git ls-remote --tags origin


попытаться сделать git tag этого должно быть достаточно, если не пытаться сделать git fetch затем git tag.


чтобы узнать подробности о последнем доступном теге, который я иногда использую:

git show `git describe` --pretty=fuller

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

git show --name-only <tagname>

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


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

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

$ git tag-l-n2 В1.0 версии 1.0 В1.1 версия 1.1

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


список доступных тегов в 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