git fatal: никакие теги не могут описать <номер sha1> - PullRequest
17 голосов
/ 22 июня 2011

Я использую теги, применяя их к ночным сборкам. Позже я хочу использовать вывод describe --tags --match <latest tag>, чтобы сказать мне, насколько далеки от ночной сборки мои изображения. Это для тестирования качества.

Я только что столкнулся с ошибкой в ​​клоне, который старше текущего тега. Я запустил git fetch --tags, поэтому я вижу тег в выводе git tag, но когда я запускаю git describe --tags --match <tagname>, я получаю fatal: No tags can describe <head sha1 version number>. Я не могу сделать git pull, чтобы обновить рабочую область на этом этапе. Почему это происходит и есть ли обходной путь? Большое спасибо

Ответы [ 4 ]

12 голосов
/ 12 января 2017

Я только что натолкнулся на эту ошибку с git version 2.8.3 и командой git describe --abbrev=0.

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

Ошибка была устранена после повторной пометкификсация с сообщением тега:

git tag v1.1.1 -m 'some message'
5 голосов
/ 07 августа 2018

Другое объяснение может заключаться в том, что хранилище было клонировано с настройкой depth=xyz (что Travis делает по умолчанию ).В этом случае история может быть обрезана до самого последнего тега.

Технически, клонирование с depth=xyz создает неглубокий клон с записями в .git/shallow, которые описывают, где обрезать историю.Когда git describe затем просматривает историю, он может добраться до этой точки отсечки и прекратить поиск тега.Это даже происходит, если вы извлекаете теги вручную после начального мелкого клона с помощью git fetch --tags.

Если это проблема, вам нужно unshallow хранилище (или создать полный (достаточный) клон в первомместо).См. Как преобразовать мелкий клон Git в полный клон? , чтобы решить проблему.

5 голосов
/ 22 июня 2011

Это происходит потому, что вы получаете только тег, а не историю фиксации тега.git describe использует эту историю, поэтому имеет ошибку.

Единственный обходной путь - извлечь историю репо, содержащую интересующий вас тег, используя git fetch <remote-name>.

0 голосов
/ 10 июля 2018

Я действительно столкнулся с этой ошибкой, когда создал тег git на основе ссылки на git.

Похоже, что ссылка на git не была "in master", и это вызывает некоторые проблемы.

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

...