Git-теги тоже подталкиваются?



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



в чем может быть проблема?

540   5  

5 ответов:

вы могли бы сделать это:

git push --tags

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

$ git push <remote> tag <tagname>

нажать один тег или

$ git push <remote> --tags

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

это очень предполагаемое поведение, чтобы сделать явным нажатие тегов. Толкая теги должны быть, как правило, сознательное выбор.


резюмируя то, что Junio C. Hamano писал (ссылка в комментариях @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).

обратите внимание, что с git 1.8.3 (22 апреля 2013 г.), вам больше не нужно делать 2 команды, чтобы нажать ветви, а затем нажать теги:

новый "--follow-tags опция" говорит "git push" к нажмите соответствующие аннотированные теги при выталкивании ветвей.

теперь вы можете попробовать, при нажатии новых коммитов:

git push --follow-tags

это не будет толкать все локальные теги, хотя, только аннотированный те, на которые ссылаются коммиты, которые нажимаются с помощью git push.


это было введено в commit c2aba15 by Junio C Hamano (gitster):

новый вариант "--follow-tags" говорит "git push " чтобы подтолкнуть аннотированные теги, которые отсутствуют с другой стороны, и которые могут быть достигнуты историей, которая в противном случае выталкивается.

например, если вы используете "simple","current" или "upstream" push, вы обычно нажимаете историю, ведущую к фиксации в вашем текущем HEAD и больше ничего.
С помощью этой опции вы также переместите все аннотированные теги, которые могут быть достигнуты с этой фиксации на другую сторону.


конфигурации push.followTags позволяет включить --follow-tags по умолчанию (Git 2.4.1+, Q2 2015).   Смотрите "Push git commits & tags одновременно"

обычно я делаю так:

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

Это означает, что он толкает каждую ветку, которая уже есть, плюс теги. Он не форсирует толчок, и он не толкает ветку, которую вы не нажимали вручную.

и если вы хотите принудительно извлечь все теги, вы можете установить его в конфигурации:

git config remote.origin.tagopt --tags

документы:

установка этого значения в --no-tags отключает автоматический тег, следующий при извлечении из удаленного . Установка его в --tags будет получать каждый тег из удаленного, даже если они недоступны из удаленного филиала руководители. Передача этих флагов непосредственно в git-fetch (1) может переопределить это установочный. Вижу варианты-теги и-нет-теги git-fetch (1).

Comments

    Ничего не найдено.