Как вы помещаете тег в удаленный репозиторий с помощью 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:
Как я могу отправить свой тег в удаленный репозиторий, чтобы его могли видеть все клиентские компьютеры?
Запустите это, чтобы нажать 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.
- Выберите фиксацию, в которую вы хотите добавить тег. Щелкните правой кнопкой мыши фиксацию, вы увидите вариант создания тега.
- В качестве другого варианта вы можете выбрать «Создать тег» в верхнем меню.
- Это всплывающее окно будет открыто, добавьте имя тега и выберите «push tag to origin», в зависимости от ваших требований. Но предпочел.
Если вы работаете в филиале:
git push --tags origin branch_name