Как перечислить все теги 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 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