Так как я создал свой репозиторий, кажется, что теги, которые я создавал, не продвинуты в репозиторий. Когда я делаю git tag
на локальном каталоге все теги присутствуют, но когда я вхожу в систему в удаленный репозиторий и делаю a git tag
, только несколько первых обнаруживаются.
Какова проблема могла быть?.
В удаленной конфигурации git по умолчанию вы должны явно нажимать теги (в то время как они выбираются автоматически вместе с коммитами, на которые они указывают). Вам нужно использовать
$ git push <remote> tag <tagname>
, чтобы отправить один тег, или
$ git push <remote> --tags
, чтобы отправить все теги (или git push --tags
, чтобы отправить на удаленный сервер по умолчанию, обычно origin
).
Это очень задуманное поведение, чтобы сделать добавление тегов явным. Размещение тегов обычно должно быть осознанным выбором.
Подводя итог тому, что написал Джунио К. Хамано (ссылка на комментарий @Andre Miras)
При загрузке вы взаимодействуете с удаленным репозиторием, опубликованным кем-то, что означает:
- набор из существующих тегов - это все, что издатель хотел, чтобы люди видели, и
- не только вы, но и другие люди также увидите те же теги.
Другими словами, теги в репозиториях, из которых вы загружаете, предназначены для общего доступа. Это упростит общение между разработчиками, если всем будет легко получать одни и те же теги.
Вот почему git fetch
автоматически «следует» за тегами, то есть загружает теги при загрузке ревизий, на которые они указывают - другими словами, загружает все соответствующие опубликованные теги.
При отправке вы отправляете из своего рабочего репозитория, который большую часть времени не является публичным, а теги в этом репозитории не предназначены для публичного использования. Вы можете использовать свои собственные локальные теги, чтобы отмечать свой прогресс, поэтому не имеет смысла вслепую проталкивать все теги из вашего репозитория в репозиторий, который вы отправляете для публикации ваших изменений, теги которого по определению являются общедоступными.
Вот почему вам нужно явно отправить тег, чтобы пометить тег как общедоступный.
В качестве альтернативы вы можете настроить пульт, на который вы нажимаете, всегда нажимать все теги, например поместите что-то подобное в свой .git / config
:
[remote "publish"] # or whatever it is named url = ... push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/*
Это означает принудительно протолкнуть все головы (все ветви) и все теги (если вы не хотите принудительно проталкивать головы , удалите префикс '+' из refspec).