Как переместить тег в удаленный репозиторий с помощью Git?

я клонировал удаленный репозиторий Git на свой ноутбук, затем я хотел добавить тег, поэтому я побежал

git tag mytag master

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

все вверх-к-дата

и если я пойду на свой рабочий стол и запустить git pull а то git tag теги не отображаются.

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

как я могу переместить свой тег в удаленный репозиторий, чтобы все клиентские компьютеры могли его видеть?

10 ответов


нажать один tag:

git push origin <tag_name>

и следующая команда должна толкать все теги (не рекомендуется):

git push --tags

git push --follow-tags

это здравый вариант, представленный в Git 1.8.3:

git push --follow-tags

он толкает оба коммита и только теги, которые являются обоими:

  • аннотированный
  • достижимый (предок) из толкнутых коммитов

Это нормально, потому что:

  • вы должны только нажать аннотированные теги на пульт дистанционного управления и сохранить легкие теги для локальной разработки, чтобы избежать столкновений тегов. Смотреть также: в чем разница между аннотированным и неаннотированным тегом?
  • он не будет нажимать аннотированные теги на несвязанные ветви

именно по этим причинам --tags следует избегать.

Git 2.4 добавил the push.followTags возможность включить этот флаг по умолчанию, который вы можете установить с помощью:

git config --global push.followTags true

для того чтобы нажать специфический, один тег делает следовать git push origin tag_name


расширить на ответ Тревора, вы можете нажать один тег, или все ваши бирки сразу.

нажмите один тег

git push <remote> <tag>

это резюме документация это объясняет (некоторые параметры команды опущены для краткости):

git push [[<repository> [<refspec>…]]

<refspec>...

формат <refspec> параметр ... источник ref <src>, затем двоеточие :, а затем пункт назначения ref <dst>...

на <dst> сообщает, какой ref на удаленной стороне обновляется с этим толкай ... если :<dst> опущено, тот же ref, что и <src> будет обновлено...

tag <tag> означает то же, что refs/tags/<tag>:refs/tags/<tag>.

нажмите все ваши теги сразу

git push --tags <remote>
# Or
git push <remote> --tags

вот резюме документация (некоторые параметры команды опущено для краткости):

git push [--all | --mirror | --tags] [<repository> [<refspec>…]]

--tags

все ссылки в разделе refs/tags есть pushed, в дополнение к refspecs явно указан в командной строке.


вы можете нажать на теги git push --tags


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

git push origin <tagname>

мы можем нажать все теги сразу, используя следующую команду:

git push origin --tags

вот некоторые ресурсы для полной информации о git пометка:

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags


вы можете нажать ваши локальные теги просто


Я использую git push <remote-name> tag <tag-name> чтобы убедиться, что я нажимаю тег. Я использую его как: git push origin tag v1.0.1. Этот шаблон основан на документации (man git-push):

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

пожалуйста, не используйте его, если вы ищете только команду, потому что основное намерение этого решения-представить вам способ решения !

чтобы облегчить жизнь - я писал скрипт ГИТ-чит-лист, который содержит некоторые полезные команды, в том числе следующие:

./git_commands.sh -push_tag TAG_NAME


Если вы работаете в филиале:

git push --tags origin branch_name