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

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

git tag mytag master

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

Все современно

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

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

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

16 ответов

Решение

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

git push origin <tag_name>

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

git push --tags

git push --follow-tags

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

git push --follow-tags

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

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

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

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

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

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

git config --global push.followTags true

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

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

Нажмите одну метку

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, явно указанным в командной строке.

Добавьте тег в текущую ветку

      git tag tag_name

Проверьте, создан он или нет

      git tag

Вставьте свое удаленное происхождение

      git push origin tag_name

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

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local 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 --tags

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

Запустите это, чтобы нажать mytag к вашему источнику git (например: GitHub или GitLab)

git push origin refs/tags/mytag

Лучше использовать полную "refspec", как показано выше (буквально refs/tags/mytag) так, на всякий случай mytag на самом деле v1.0.0 и неоднозначен (например, потому что есть ветка, также названная v1.0.0).

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

получить все теги с удаленного

      git fetch --all --tags

Я сделал что-то вроде этого:

      git push --tags origin <branch-name> <tag-name>

e.g. : git push --tags origin master v2.0

В моем случае я использую версию Git.2.30.0Я попробовал оба--follow-tagsи--tags, но оба они не смогли отправить все теги в удаленный репозиторий. В итоге я использовал:

      +refs/remotes/origin/tags/*:refs/tags/*

Итак, для тех, кто ищет способ отправить все теги (вместе с мастером) в удаленный репозиторий , вы можете просто добавить следующее:+refs/remotes/origin/tags/*:refs/tags/*на вашpushкоманда.

Итак, ваша команда должна быть примерно такой:

      git push path/to/your/repo +refs/remotes/origin/tags/*:refs/tags/*

Он успешно создаст все ваши теги в удаленном репозитории.

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

Чтобы сделать жизнь проще - я написал скрипт git-cheat-sheet, который содержит несколько полезных команд, в том числе следующие:

./git_commands.sh -push_tag TAG_NAME

Также можно использовать доступные инструменты для создания тега. Был добавлен один образец расширений Git и дерева исходного кода.

Кроме того, если вы хотите, чтобы тег был перемещен в удаленную ветку, выберите «Отправить тег в источник» и нажмите свой тег. Это поможет другим разработчикам использовать или ссылаться на конкретное место, когда они опаздывают с последней версией репозитория.

Откройте репозиторий в GitExtension / sourcetree.

  • Выберите фиксацию, в которую вы хотите добавить тег. Щелкните правой кнопкой мыши фиксацию, вы увидите вариант создания тега.

Расширение GIT:

Sourcetree:

  • В качестве другого варианта вы можете выбрать «Создать тег» в верхнем меню.

Расширение GIT:

Sourcetree:

  • Это всплывающее окно будет открыто, добавьте имя тега и выберите «push tag to origin», в зависимости от ваших требований. Но предпочел.

Расширение GIT:

Sourcetree:

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

git push --tags origin branch_name
Другие вопросы по тегам