Я знаю причину, которая git push --tags
является отдельной операцией к старой git push
. Нажатие тегов должно быть осознанным выбором, так как вы не хотите случайно нажать один. Хорошо. Но есть ли способ объединить оба? (Кроме git push && git push --tags
.)
388
git push && git push --tags
?--follow-tags
с git 1.8.3 появилась новая опция--tags
не различает легкие и аннотированные теги источникаОтветы:
Обновление май 2015
Начиная с git 2.4.1 , вы можете сделать
Как отметил в этой теме Мэтт Роджерс, отвечая Уэсу Херду :
--follow-tags
только подталкивает аннотированные теги .Это будет толкаться (в отличие от
git tag <tagname>
легкого тега, который не будет толкаться, как я уже упоминал здесь )Обновление апрель 2013
Начиная с git 1.8.3 (22 апреля 2013 г.) , вам больше не нужно делать 2 команды для добавления веток и затем для добавления тегов :
Теперь вы можете попробовать при нажатии новых коммитов:
Это не будет выдвигать все локальные теги, только тот, на который ссылаются коммиты, которые передаются с помощью
git push
.Git 2.4.1+ (второй квартал 2015 года) представит опцию
push.followTags
: см. « Как сделать так, чтобыgit push
теги включались в ветку? ».Оригинальный ответ, сентябрь 2010
Ядерный вариант был бы
git push --mirror
, что подтолкнет все ссылки подrefs/
.Вы также можете вставить только один тег с вашей текущей веткой коммита:
Вы можете объединить
--tags
опцию с refspec, например:(так как
--tags
означает: все ссылки под вставляютсяrefs/tags
, в дополнение к ссылочным спецификациям, явно указанным в командной строке )У вас также есть эта запись " Нажатие веток и тегов одним вызовом " git push "
Осторожно , так как заметил по Aseem Кишор
push = +refs/heads/*
будет принудительно выталкивает все ваши филиалы .Рене Шейбе добавляет этот интересный комментарий :
источник
push = +refs/heads/*
линия принудительно выталкивает все ваши ветви. Это укусило меня только сейчас, так что к вашему сведению--follow-tags
флаг, добавленный в git 1.8.3, могу ли я настроить мою установку git, чтобы сделать ее по умолчанию?push.default
( git-scm.com/docs/git-config ) можно определить действия по умолчанию на толчке (nothing
,matching
,upstream
,simple
как и в stackoverflow.com/a/10002469/6309 ). Вам нужно добавить--follow-tag
явно.git push --follow-tags -f
не работал для меня--follow-tags
Параметр вводит в заблуждение , так как только теги под.git/refs/tags
считаются. Еслиgit gc
выполняется, теги перемещаются из.git/refs/tags
в.git/packed-refs
. После этогоgit push --follow-tags ...
больше не работает, как ожидалось.Может быть, это кому-то поможет
источник
@ Since Git 2.4
git push --atomic origin <branch name> <tag>
источник
В Git GUI есть кнопка PUSH - простите за каламбур, а в открывшемся диалоговом окне есть флажок для тегов.
Я выдвинул ветку из командной строки без тегов, а затем снова попытался протолкнуть ветку, используя
--follow-tags
опцию, описанную выше. Опция описана как следующие аннотированные теги. Мои теги были простыми тегами.Я что-то исправил, пометил коммит с исправлением (чтобы коллеги могли выбрать исправление), затем изменил номер версии программного обеспечения и пометил созданный мной выпуск (чтобы коллеги могли клонировать этот выпуск).
Гит вернулся, сказав, что все было актуально. Он не отправил теги! Возможно, потому что теги не были аннотированы. Возможно, потому что не было ничего нового на ветке.
Когда я сделал похожий толчок с Git GUI, теги были отправлены.
В настоящее время я собираюсь отправить свои изменения на мои пульты с помощью Git GUI, а не с помощью командной строки и
--follow-tags
.источник