Ответ 1
Я столкнулся с тем же вопросом несколько минут назад. Ни один из уже представленных ответов не касался реальной проблемы, которая избавляется от сообщения warning: tag 'foo' is really 'bar' here
и получает git describe
, чтобы просто перечислить новое имя тега. Это было особенно важно в моем случае, поскольку моя система сборки использует git describe
для записи в сборку, какие источники были использованы для создания сборки.
Репликация проблемы
Я могу воспроизвести проблему, выполнив следующие действия:
$ git tag foo --annotate -m"original message"
$ git tag bar foo
$ git tag -d foo
$ git describe
warning: tag 'foo' is really 'bar' here
foo
(Флаг --annotate
выше, поскольку -m
подразумевает --annotate
, но я включил его для выделения.) Я попытался воспроизвести проблему с помощью легкого тега, но не смог этого сделать, Поэтому, чтобы воспроизвести проблему, необходима аннотация.
Фиксация проблемы
Некоторые из них включают в себя толкание вещей, которые уже подтолкнули, но я нахожусь в согласии с Дэвидом Калпом, когда он говорит:
Тем не менее, бывают случаи, когда это просто не стоит долговременной боли неточной (грязной) истории, и кратковременная боль того стоит.
Как только вы застряли с warning: tag 'foo' is really 'bar' here
, вы должны сделать:
$ git tag bar bar -m"original message" --force
$ git describe
bar
При необходимости адаптируйте, если сообщение необходимо изменить.
Чтобы удалить старый тег, если он уже был нажат:
$ git push origin :refs/tags/foo
Чтобы обновить новый тег, если он уже был нажат:
$ git push origin refs/tags/bar
Избегание проблемы
Чтобы избежать проблемы, в первую очередь вам нужно создать bar
с помощью
$ git tag bar foo -m"original message"