Push git фиксирует и теги одновременно

Я знаю, что git push --tags является отдельной операцией для простого старого git push. Нажатие тегов должно быть сознательным выбором, так как вы не хотите случайно нажимать один. Это здорово. Но есть ли способ продвинуть оба вместе? (Помимо git push && git push --tags.)

Ответ 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

В Git GUI есть кнопка PUSH - простите за каламбур, а в открывшемся диалоговом окне есть флажок для тегов.

Я выдвинул ветку из командной строки без тегов, а затем снова попытался протолкнуть ветку, используя --follow-tags описанную выше. Опция описана как следующие аннотированные теги. Мои теги были простыми тегами.

Я что-то исправил, пометил коммит с исправлением (чтобы коллеги могли выбрать исправление), затем изменил номер версии программного обеспечения и пометил созданный мной выпуск (чтобы коллеги могли клонировать этот выпуск).

Гит вернулся, сказав, что все было актуально. Он не отправил теги! Возможно, потому что теги не были аннотированы. Возможно, потому что не было ничего нового на ветке.

Когда я сделал похожий толчок с Git GUI, теги были отправлены.

Tags sent with Git GUI

В настоящее время я собираюсь отправить свои изменения на мои пульты с помощью Git GUI, а не с помощью командной строки и --follow-tags.

Ответ 4

@с Git 2.4

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

Ответ 5

Это работает для меня:

git push --tags origin master