Для релизов я обычно помечаю что-то вроде v1.1.0. Во время моего сценария сборки я создаю файл fwVersion.c, содержащий текущую информацию git. В настоящее время у меня есть информация о фиксации и ветке в файле, но я хотел бы добавить тег.
Это возможно?
git describe --tags <commit-id>
для неаннотированных теговgit describe --all --exact-match `git rev-parse HEAD`
git describe --tags --abbrev=0 REV
это будет полезно, если вам не нужен мусор на теге.git describe --all
(для текущей проверенной фиксации) илиgit describe --all <commit>
всегда делал практически все, что хотел.Если вам нужен первый тег, содержащий фиксацию, то:
дает лучший ответ ИМО. Если у вас есть частые теги, то использование "git tag --contains" в старом коммите в большом репозитории может занять некоторое время, и вы получите все теги, которые содержат этот коммит.
Эта форма git description выполняется очень быстро и дает вам одно выходное значение, которое является первым тегом, содержащим фиксацию, и насколько далеко назад находится ваша фиксация.
источник
Как насчет этого?
git tag --points-at <commit-id>
Он дает вам все теги, которые имеет данный коммит (тогда как
git describe
дает вам только один), и не включает теги для потомков коммитов (например,git tag --contains
делает).источник
Вы можете найти эту информацию в руководстве
источник
Я нашел комбинацию из обоих основных ответов, чтобы дать мне то, что я хотел:
Это дает вам тег, который предназначен ТОЛЬКО для этого коммита и для тех, у кого нет аннотации. Полезно, когда вы хотите найти теги и не беспокоиться об отключении форматирования (например, для Jenkins).
например.
$ git describe --tags --exact-match head~2
Дает тебе:
источник
Обобщая некоторые ответы:
git tag --contains [<ref>]
и
git tag --points-at [<ref>]
или просто
git tag
вести себя так же, печатая любые (и все) теги для указанной ссылки или текущей фиксации, если не указано иное.
git describe --tags [<ref>]
где по
<ref>
умолчанию используется текущая фиксация, завершается со 128, если с фиксацией не связаны никакие теги, и печатает тег, связанный с фиксацией (похоже, шаблон не существует).git describe [<ref>]
ведет себя так же, как и с--tags
за исключением того, что печатает только аннотированные теги.Если задать параметр
--contains
to,describe
будет напечатан тег a, связанный с предком указанной фиксации. Напримеристочник