Теги мерзавца становятся продвинутыми также?

Так как я создал свой репозиторий, кажется, что теги, которые я создавал, не продвинуты в репозиторий. Когда я делаю git tag на локальном каталоге все теги присутствуют, но когда я вхожу в систему в удаленный репозиторий и делаю a git tag, только несколько первых обнаруживаются.

Какова проблема могла быть?.

176
задан Jaime Hablutzel 10 December 2018 в 19:07
поделиться

2 ответа

Можно сделать так:

git push --tags
233
ответ дан 23 November 2019 в 20:22
поделиться

В удаленной конфигурации git по умолчанию вы должны явно нажимать теги (в то время как они выбираются автоматически вместе с коммитами, на которые они указывают). Вам нужно использовать

$ git push <remote> tag <tagname>

, чтобы отправить один тег, или

$ git push <remote> --tags

, чтобы отправить все теги (или git push --tags , чтобы отправить на удаленный сервер по умолчанию, обычно origin ).

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


Подводя итог тому, что написал Джунио К. Хамано (ссылка на комментарий @Andre Miras)

При загрузке вы взаимодействуете с удаленным репозиторием, опубликованным кем-то, что означает:

  1. набор из существующих тегов - это все, что издатель хотел, чтобы люди видели, и
  2. не только вы, но и другие люди также увидите те же теги.

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

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

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

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


В качестве альтернативы вы можете настроить пульт, на который вы нажимаете, всегда нажимать все теги, например поместите что-то подобное в свой .git / config :

[remote "publish"] # or whatever it is named
    url = ...
    push = +refs/heads/*:refs/heads/*
    push = +refs/tags/*:refs/tags/*

Это означает принудительно протолкнуть все головы (все ветви) и все теги (если вы не хотите принудительно проталкивать головы , удалите префикс '+' из refspec).

135
ответ дан 23 November 2019 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: