git description терпит неудачу с «роковым: имена не найдены, ничего не могу описать». - PullRequest
57 голосов
/ 07 февраля 2011

Я использую git 1.7.1 в Ubuntu 10.10 amd64 и пытаюсь извлечь хеш моего HEAD-хранилища, чтобы использовать его в информации об автоматической версии, которую я собираю в своем проекте.

В прошлом это всегда работало с использованием

git describe --tags

однако, git теперь выбрасывает

fatal: No names found, cannot describe anything.

на меня. Кто-нибудь знает, что это значит?

Google показал только несколько обращений и никакого решения.

Ответы [ 5 ]

53 голосов
/ 07 февраля 2011

Если вам нужен идентификатор вашего HEAD, тогда вам не нужно describe, вам просто нужно использовать rev-parse.

git rev-parse HEAD

Если вам нужен сокращенный хеш, вы можете использовать --short.

git rev-parse --short HEAD

Если вы хотите, чтобы «description» возвращалось к сокращенному хешу, если он не может найти подходящих тегов, вы можете использовать --always.

git describe --always
32 голосов
/ 20 марта 2011

Звучит так, как будто вы ожидаете, что git-describe будет включать в себя самый последний тег и количество коммитов со времени этого тега.Однако сообщение fatal: No names found означает, что у вас нет тегов в вашем хранилище.Вам нужно иметь хотя бы один тег в истории коммитов, чтобы git describe сообщал вам последний тег.

Просто угадайте, но, возможно, вы пометили коммит где-то еще, но никогда не выдвигали тег вверх по течениюможет быть, вы выдвинули коммит вверх по течению, отметили его позже, а не отменили?).Теперь новый клон вашего апстрима дает вам эту ошибку (так как у него нет тега).Если это так, вы можете попробовать git push --tags из репозитория, в котором есть нужный тег (где git describe делает то, что вы ожидаете).Затем выполните git pull в хранилище, у которого нет тега.

18 голосов
/ 01 сентября 2017

У меня была эта проблема в среде сборки CI, где инструмент CI выполнял поверхностный клон репозитория.Это расстраивало, потому что в моей среде разработки команда

git describe --tags

выдала бы мне вывод, похожий на

2.2.12-7-g8ec9d6c9

, тогда как в среде сборки я получил бы «роковые имена не найдены»ошибка.Если бы я попытался использовать тег --always

git describe --tags --always

, я бы просто получил хэш последнего коммита, но не самый последний тэг до этого коммита

8ec9d6c9

Выполнениеgit pull в среде сборки не поможет, потому что после мелкого клонирования репо будущие извлечения не будут обновлять теги.

Решением было обеспечить первоначальный клон репо всреда сборки не была мелким клоном (т. е. команда git clone не использовалась с параметрами --depth, --shallow-since или --shallow-exclude).

1 голос
/ 29 ноября 2018

У меня была похожая проблема во время работы над заданием CI, проблема заключалась в том, что использованный git clone или scm не извлекал теги при клонировании репозитория.

Выборка без тегов Выборка исходных изменений с https://github.**********

Вы можете включить выборочные теги, выбрав «Расширенное поведение клонирования», а затем щелкнув по выборочным тегам ..

Screenshot_enabling_git_fetch

0 голосов
/ 06 октября 2015

Эта команда помогла мне: git fetch -t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...