"git description" игнорирует тег - PullRequest
53 голосов
/ 11 ноября 2010

В следующих строках:

$ git tag -n1
v1.8        Tagged the day before yesterday
v1.9        Tagged yesterday
v2.0        Tagged today
$ git describe
v1.9-500-ga6a8c67
$ 

Может кто-нибудь объяснить, почему тег v2.0 не используется "git description", и как это исправить?Тег v2.0 уже выдвинут, поэтому я предполагаю, что не могу просто удалить и повторно добавить его.

Ответы [ 3 ]

71 голосов
/ 11 ноября 2010

git describe по умолчанию использует только аннотированные теги.укажите параметр --tags, чтобы он также использовал легкие теги

и убедитесь, что вы отметили правильный коммит (git rev-parse HEAD).аннотированные теги создаются с git tag -a.если вы делаете git show <tagname> и видите только коммит, это облегченный тег, если вы видите дополнительное сообщение тега, это аннотированный тег.

17 голосов
/ 11 января 2012

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

# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber

. Здесь есть два тега: один для версии 19 и другой для 20. 20 был помечен после 19, но для того же коммита.В этом случае возвращаемое описание

# git describe --tags
v1.1.0.19.0

Я не знаю, почему он это сделал, но, похоже, так оно и работает с дублирующимися тегами.

Другой случай, когда это может произойти, еслиу вас есть тег, который более «близок» к вам в ветке.Этот случай был объяснен в этом блоге .

13 голосов
/ 21 сентября 2016

Проблема в том, что git tag показывает все теги во всех ветвях, в то время как git describe использует только теги для коммитов, которые доступны в текущей ветви .

Вот пример (причина, по которой я пришел сюда на самом деле):

 $ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2

Показывает, что последний доступный тег - v0.4.2, но это мой вывод git describe:

 $ git describe --tags
v0.4.0-2-acd334c

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

 $ git log --oneline --decorate=short | grep '\(tag\:' | head -n3
acd334c (tag: v0.4.0) Merge pull request #1061
988fe5e (tag: v0.3.6) Merge pull request #859
5f97274 (tag: v0.3.5) Merge pull request #646

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

Надеюсь, что это помогает, и спасибо @eis за идею проверки журналов.

...