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

1232

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

git tag mytag master

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

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

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

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

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

Теги:
push
git-push
repository
git-tag

8 ответов

2100
Лучший ответ

Чтобы нажать тег одиночный:

git push origin <tag_name>

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

git push --tags
  • 366
    Я рекомендую не использовать и не обучать других использовать git push --tags как очень трудно избавиться от плохих тегов, когда ваши коллеги обучены нажимать на все теги, поскольку люди продолжают нажимать старые плохие теги, которые у них есть. локально каждый раз, когда они хотят нажать новый тег. Из-за этого я буду только рекомендовать кому-либо использовать git push origin <tag_name> сейчас.
  • 34
    Чтобы git push origin <tag_name> --force перемещенный тег: git push origin <tag_name> --force
Показать ещё 4 комментария
619

- follow-tags - это разумная опция, введенная в Git 1.8.3:

git push --follow-tags

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

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

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

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

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

git config --global push.followTags true
  • 9
    Спасибо за это, имеет смысл выдвигать все за один раз, вместо того, чтобы выдвигать контент, а затем раздвигать теги отдельно.
  • 1
    Для меня сразу не было ясно, что это было отношение «между аннотированным» и «достижимым из выдвинутых коммитов». Я надеялся, что это подтолкнет все достижимые теги, независимо от того, аннотированы они или нет. Может быть, изменить, чтобы убедиться, что это не ИЛИ?
Показать ещё 5 комментариев
223

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

68

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

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

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 явно перечисленные в командной строке.

  • 0
    В примере пропущен tag ключевого слова. например, git push origin tag funny-tag-1 .
  • 1
    @ JamesThomasMoon1979 Тебе это не нужно. Вы помещаете один тег в источник, как это: git push origin my-tag (я только что попробовал!)
Показать ещё 2 комментария
36

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

35

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

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 --tags origin branch_name

Ещё вопросы

Сообщество Overcoder
Наверх
Меню