Push git фиксирует и теги одновременно - PullRequest
318 голосов
/ 19 сентября 2010

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

Ответы [ 3 ]

467 голосов
/ 19 сентября 2010

Обновление май 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+ (второй квартал 2015 года) представит опцию push.followTags: см. « Как сделать так, чтобы« git push »включал теги в ветку? ».

Оригинальный ответ, сентябрь 2010

Ядерная опция будет git push --mirror, которая будет выдвигать все ссылки под refs/.

Вы также можете вставить только один тег с вашей текущей фиксацией ветки:

git push origin : v1.0.0 

Вы можете комбинировать опцию --tags с refspec, например:

git push origin --tags :

(поскольку --tags означает: все ссылки в 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/* будет принудительно толкнет все ваши ветви .

Это укусило меня только сейчас, так что, к вашему сведению.


Рене Шейбе добавляет этот интересный комментарий :

Параметр --follow-tags вводит в заблуждение, так как рассматриваются только теги под .git/refs/tags.
Если выполняется git gc, теги перемещаются с .git/refs/tags на .git/packed-refs. После этого git push --follow-tags ... больше не работает, как ожидалось.

0 голосов
/ 02 июля 2019

Git GUI

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

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

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

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

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

Tags sent with Git GUI

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

0 голосов
/ 27 апреля 2019

Может быть, это кому-нибудь поможет:

 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          
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...