Как перезаписать локальные теги с помощью git fetch? - PullRequest
10 голосов
/ 12 марта 2012

Как перезаписать локальные теги с помощью git fetch? Я хочу заменить локальные теги удаленными тегами.

Ответы [ 5 ]

6 голосов
/ 31 января 2014

git fetch --tags --all --prune

Это будет явно указывать git, что нужно извлекать и в то же время удалять теги, которых больше нет на пульте.

5 голосов
/ 12 марта 2012

git fetch --tags сделает это.

Из документов (описание параметра --tags):

Большинство тегов извлекаются автоматически при загрузке головок веток, но этот механизм не извлекает теги, которые не указывают на объекты, достигаемые от отслеживаемых головок ветвей. Этот флаг позволяет загружать все теги и связанные с ними объекты. Поведение по умолчанию для пульта может быть указано с помощью параметра remote..tagopt.

3 голосов
/ 20 марта 2019

Начиная с Git 2.2.0, вам нужно явно указать флаг принудительного применения:

git fetch origin --tags --force

До версии Git 2.20 и в отличие от push с помощью git-push [1], любые обновления refs / tags / * будут приниматься без + в refspec (или --force). При извлечении мы беспорядочно считали все обновления тегов с удаленного устройства принудительными. Начиная с Git версии 2.20, выборка для обновления refs / tags / * работает так же, как и при нажатии. То есть любые обновления будут отклонены без + в refspec (или --force).

https://git -scm.com / Docs / мерзавец-Fetch

0 голосов
/ 10 января 2017

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

  • обновляет локальный тег (хотя руководство не сообщает)
    • git fetch --tags
  • не обновляет локальный тег
    • git fetch
    • git fetch --prune
    • git fetch --prune --force

Обновление / перезапись тегов выглядит следующим образом:

From git:path/name
 - [tag update]      my_tag -> my_tag

Это работает для легких и аннотированных тегов, даже смешанных.То есть: аннотированный тег может быть перезаписан более легким и наоборот.

Я использовал версию git 2.7.4

0 голосов
/ 12 марта 2012

Теги не будут перезаписаны, потому что они должны быть неизменными.Если вы хотите иметь (реально) изменяемый объект, используйте вместо него указатель ветви или ссылку.В результате вы получите: git tag -d tagname ... и снова загрузите его.

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