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

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

git tag mytag master

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

Все актуально

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

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

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

Ответы [ 8 ]

3283 голосов
/ 04 марта 2011

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

git push origin <tag_name>

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

git push --tags
828 голосов

git push --follow-tags

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

git push --follow-tags

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

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

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

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

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

git config --global push.followTags true
246 голосов
/ 24 октября 2012

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

89 голосов
/ 22 апреля 2014

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

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

git push <remote> <tag>

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

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

<refspec>...

Формат параметра <refspec>:… ссылка на источник <src>, за которым следует двоеточие :, за которым следует пункт назначения <dst>

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

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

47 голосов
/ 10 января 2016

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

46 голосов
/ 04 марта 2011

Вы можете нажать теги, как это git push --tags

24 голосов
/ 25 ноября 2016

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

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 
7 голосов
/ 18 апреля 2018

Я использую 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>.
...