Как переместить тег в удаленный репозиторий с помощью 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 <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. Нам нужно явно отправить эти теги на удаленный сервер, используя следующую команду:
git push origin <tagname>
мы можем нажать все теги сразу, используя следующую команду:
git push origin --tags
вот некоторые ресурсы для полной информации о git пометка:
Я использую 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