Подтвердить что ты не робот

"git описать" игнорирует тег

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

$ 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 описать", и как это исправить? Тег v2.0 уже нажат, поэтому я предполагаю, что я не могу просто удалить и повторно добавить его.

4b9b3361

Ответ 1

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

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

Ответ 2

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

# 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

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

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

Ответ 3

Проблема 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 за идею с проверкой журналов.