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

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

git tag mytag master

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

Все обновленные

И если я зашел на свой рабочий стол и запустил git pull, а затем git tag, теги не показываются.

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

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

Ответ 1

Чтобы вставить один тег:

git push origin <tag_name>

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

git push --tags

Ответ 2

git push --follow-tags

Это нормальная опция, представленная в Git 1.8.3:

git push --follow-tags

Он выдвигает как коммиты, так и только теги, которые оба:

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

Это вменяемое, потому что:

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

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

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

git config --global push.followTags true

Ответ 3

Чтобы указать конкретный, один тег следует следующему git push origin tag_name

Ответ 4

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

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

git push <remote> <tag>

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

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

<refspec>...

Формат параметра <refspec> - это & ​​hellip; источник ref <src>, за которым следует двоеточие :, за которым следует пункт назначения ref <dst> & hellip;

<dst> указывает, какая ссылка на удаленную сторону обновляется с помощью этого push & hellip; Если :<dst> опущен, то тот же ref, что и <src>, будет обновление & hellip;

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

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

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

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

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

--tags

Все ссылки ref под refs/tags толкаются, в дополнение к refspecs явно перечисленные в командной строке.

Ответ 5

Теги не отправляются в удаленный репозиторий командой 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

Ответ 6

Вы можете нажимать теги, подобные этому git push --tags

Ответ 7

Вы можете выдвинуть все локальные теги просто командой git push --tags.

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 

Ответ 8

Я использую git push <remote-name> tag <tag-name> чтобы убедиться, что я 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>.

Ответ 9

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

git push --tags origin branch_name