Я знаю, что git push --tags
является отдельной операцией для простого старого git push
. Нажатие тегов должно быть сознательным выбором, так как вы не хотите случайно нажимать один. Это здорово. Но есть ли способ продвинуть оба вместе? (Помимо git push && git push --tags
.)
Push git фиксирует и теги одновременно
Ответ 1
Обновление до 2015 года
По git 2.4.1 вы можете сделать
git config --global push.followTags true
Если установлено значение true, включите опцию -follow-tags по умолчанию. Вы можете переопределить эту конфигурацию во время нажатия, указав --no-follow-tags.
Обновление апрель 2013 г.
Так как git 1.8.3 (22 апреля 2013 г.), вам больше не нужно делать 2 команды для нажатия ветвей, а затем нажать теги:
Новый параметр <
--follow-tags
указывает "git push
" на нажимать соответствующие аннотированные теги при нажатии ветвей.
Теперь вы можете попробовать, нажав новые коммиты:
git push --follow-tags
Это не будет толкать все локальные теги, но только те, на которые ссылаются коммиты, которые помещаются с помощью git push
.
git 2.4.1+ (Q2 2015) представит опцию push.followTags
: см. "Как сделать "git push
" включать теги внутри ветки?".
Оригинальный ответ, сентябрь 2010 г.
Ядерная опция будет git push --mirror
, которая будет вызывать все ссылки ref под refs/
.
Вы также можете нажать только один тег с вашей текущей фиксацией ветки:
git push origin : v1.0.0
Вы можете объединить параметр --tags
с помощью refspec:
git push origin --tags :
(поскольку --tags
означает: все ссылки ref под refs/tags
нажаты, в дополнение к refspecs, явно указанным в командной строке)
У вас также есть эта запись Нажатие ветвей и тегов с помощью единственного вызова git push
Удобный отзыв был отправлен только в git список рассылки от Zoltán Füzesi:
Я использую
.git/config
для решения этой проблемы:
[remote "origin"]
url = ...
fetch = +refs/heads/*:refs/remotes/origin/*
push = +refs/heads/*
push = +refs/tags/*
При добавлении этих строк
git push origin
будет загружать все ваши ветки и теги. Если вы хотите загрузить только некоторые из них, вы можете перечислить их.Я еще не пробовал это, но похоже, что это может быть полезно, пока другой способ нажатия ветвей и тегов в одно и то же время не будет добавлен к git push.
С другой стороны, я не против печатать:
$ git push && git push --tags
Остерегайтесь, прокомментировал Aseem Kishore
push = +refs/heads/*
будет форсировать все ваши ветки.
Это немного меня сейчас, так что FYI.
René Scheibe добавляет этот интересный комментарий:
Параметр
--follow-tags
вводит в заблуждение, так как учитываются только теги под.git/refs/tags
.
Еслиgit gc
запущен, теги перемещаются из.git/refs/tags
в.git/packed-refs
. Впоследствииgit push --follow-tags ...
больше не работает так, как ожидалось.
Ответ 2
Может быть, это кому-то поможет
1. git commit -a -m "msg"
2. git tag 0.1.0 // creates a new tag locally
3. git push origin tag 0.1.0 // pushes the tag & the code in the remote repo
Ответ 3
В Git GUI есть кнопка PUSH - простите за каламбур, а в открывшемся диалоговом окне есть флажок для тегов.
Я выдвинул ветку из командной строки без тегов, а затем снова попытался протолкнуть ветку, используя --follow-tags
описанную выше. Опция описана как следующие аннотированные теги. Мои теги были простыми тегами.
Я что-то исправил, пометил коммит с исправлением (чтобы коллеги могли выбрать исправление), затем изменил номер версии программного обеспечения и пометил созданный мной выпуск (чтобы коллеги могли клонировать этот выпуск).
Гит вернулся, сказав, что все было актуально. Он не отправил теги! Возможно, потому что теги не были аннотированы. Возможно, потому что не было ничего нового на ветке.
Когда я сделал похожий толчок с Git GUI, теги были отправлены.
В настоящее время я собираюсь отправить свои изменения на мои пульты с помощью Git GUI, а не с помощью командной строки и --follow-tags
.
Ответ 4
@с Git 2.4
git push --atomic origin <branch name> <tag>
Ответ 5
Это работает для меня:
git push --tags origin master