Estou ciente da razão de git push --tags
ser uma operação separada para a idade antiga git push
. Enviar etiquetas por push deve ser uma escolha consciente, pois você não deseja enviar acidentalmente uma. Isso é bom. Mas existe uma maneira de unir os dois? (Além de git push && git push --tags
.)
387
git push && git push --tags
?--follow-tags
opção, uma vez git 1.8.3--tags
não faz distinção entre marcas leves e anotados fonteRespostas:
Atualização de maio de 2015
No git 2.4.1 , você pode fazer
Conforme observado neste tópico por Matt Rogers, respondendo a Wes Hurd :
--follow-tags
empurra apenas tags anotadas .Isso seria enviado (ao contrário de
git tag <tagname>
uma tag leve, que não seria enviada, como eu mencionei aqui )Atualização de abril de 2013
Desde o git 1.8.3 (22 de abril de 2013) , você não precisa mais executar 2 comandos para enviar ramificações e depois enviar tags :
Agora você pode tentar, ao enviar novas confirmações:
Porém, isso não enviará todas as tags locais, apenas a referenciada por confirmações que são enviadas com o
git push
.O Git 2.4.1+ (Q2 2015) apresentará a opção
push.followTags
: consulte " Como fazer"git push
"incluir tags em uma ramificação? ".Resposta original, setembro de 2010
A opção nuclear seria
git push --mirror
, o que empurrará todos os árbitros para baixorefs/
.Você também pode enviar apenas uma tag com seu commit de ramificação atual:
Você pode combinar a
--tags
opção com um refspec como:(uma vez que
--tags
significa: Todas as referências abaixorefs/tags
são enviadas por push , além das referências especificadas explicitamente na linha de comando )Você também tem esta entrada " Empurrando ramificações e tags com uma única invocação " git push "
Cuidado , como comentado por Aseem Kishore
push = +refs/heads/*
vai forçar-empurra todos os seus ramos .René Scheibe acrescenta este comentário interessante :
fonte
push = +refs/heads/*
linha force- empurra todos os seus ramos. Isso me mordeu agora, então, para sua informação.--follow-tags
sinalizador adicionado no git 1.8.3, posso configurar minha instalação do git para tornar o padrão?push.default
( git-scm.com/docs/git-config ) pode definir ações padrão de push (nothing
,matching
,upstream
,simple
como em stackoverflow.com/a/10002469/6309 ). Você precisa adicionar--follow-tag
explicitamente.git push --follow-tags -f
não funcionou para mim.--follow-tags
parâmetro é enganoso, pois apenas as tags abaixo.git/refs/tags
são consideradas. Segit gc
for executado, as tags serão movidas de.git/refs/tags
para.git/packed-refs
. Depois dissogit push --follow-tags ...
, não funciona mais como o esperado.Talvez isso ajude alguém:
fonte
@since Git 2.4
git push --atomic origin <branch name> <tag>
fonte
A GUI do Git tem um botão PUSH - perdoe o trocadilho e a caixa de diálogo que ele abre possui uma caixa de seleção para tags.
Empurrei uma ramificação na linha de comando, sem tags, e tentei novamente empurrar a ramificação usando o
--follow-tags
opção descrita acima. A opção é descrita como as seguintes tags anotadas. Minhas tags eram simples.Eu consertei algo, marquei o commit com a correção (para que os colegas possam escolher a correção), depois mudei o número da versão do software e marquei o release que eu criei (para que os colegas possam clonar esse release).
Git voltou dizendo que tudo estava atualizado. Não enviou as tags! Talvez porque as tags não foram anotadas. Talvez porque não havia nada de novo no ramo.
Quando fiz um push semelhante com a GUI do Git, as tags foram enviadas.
Por enquanto, pressionarei minhas alterações nos meus controles remotos com a GUI do Git e não com a linha de comando e
--follow-tags
.fonte