2010-09-19 4 views
238

Soy consciente de la razón por la cual git push --tags es una operación separada a simple viejo git push. Empujar las etiquetas debe ser una elección consciente ya que no quiere presionar una. Esta bien. Pero, ¿hay alguna forma de presionar a los dos juntos? (Aparte de git push && git push --tags.)Empuje las escrituras y las etiquetas de git al mismo tiempo

+1

¿Cuál es tu problema con 'git push && git push --tags'? – fuz

+13

Nada en particular, es solo más lento ya que la conexión debe establecerse dos veces. –

+11

Ver mi respuesta actualizada a continuación: hay una nueva opción '--follow-tags' desde git 1.8.3 – VonC

Respuesta

349

Actualización mayo el año 2015

A partir de git 2.4.1, puede hacerlo

git config --global push.followTags true 

Si se establece para permitir la verdadera opción --follow-etiquetas por defecto. Puede anular esta configuración en el momento de la inserción especificando --no-follow-tags.

Update Abril 2013

Desde git 1.8.3 (April 22d, 2013), ya no tiene que hacer 2 comandos para empujar las ramas, y luego empujar las etiquetas:

La nueva opción "--follow-tags" cuenta " git push "a empujar las etiquetas anotadas relevantes al empujar ramas.

Ahora puede intentar, al empujar nuevas confirmaciones:

git push --follow-tags 

que no va a empujar todo las etiquetas locales, sin embargo, sólo el que hace referencia confirmaciones que son empujadas con el git push.

Git 2.4.1+ (Q2 2015) introducirá la opción push.followTags: ver "How to make “git push” include tags within a branch?".

Respuesta original, septiembre de 2010

La opción nuclear sería git push --mirror, lo que empujará todos los árbitros bajo refs/.

También puede empujar simplemente una etiqueta con su rama actual se comprometen:

git push origin : v1.0.0 

Se puede combinar la opción --tags con un refspec como:

git push origin --tags : 

(desde --tags significa: Todos los árbitros en virtud refs/tags son empujados, además de referencias especificadas explícitamente en la línea de comando)


Usted también tiene la entrada "Pushing branches and tags with a single "git push" invocation"

Un consejo útil se acaba de publicar en la Git mailing list de Zoltán Füzesi:

utilizo .git/config de resolver esto:

[remote "origin"] 
    url = ... 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    push = +refs/heads/* 
    push = +refs/tags/* 

Con estas líneas agregó git push origin cargará todas sus ramas y etiquetas. Si desea subir solo algunos de ellos, puede enumerarlos.

Aún no lo he probado, pero parece que podría ser útil hasta que se agregue otra forma de empujar ramas y etiquetas al mismo tiempo a git push.
Por otro lado, no me importa escribiendo:

$ git push && git push --tags 

Cuidado con, como commented por Aseem Kishore

push = +refs/heads/* se de fuerza desplaza al resto de sus ramas.

Esto me mordió hace un momento, así que FYI.


René Scheibe añade this interesting comment:

El parámetro --follow-tags es engañosa, ya que sólo en virtud de etiquetas .git/refs/tags son considerados.
Si se ejecuta git gc, las etiquetas se mueven de .git/refs/tags a .git/packed-refs. Luego git push --follow-tags ... ya no funciona como se esperaba.

+0

Gracias por la respuesta detallada. Me temo que 'git push --tags:' no funciona para mí, pero 'git push origin --tags:' ** did **. No estoy seguro si eso es algo de configuración en mi parte o un error tipográfico en el tuyo. –

+0

@Will: más un error tipográfico en mi lado. Lo he arreglado en mi respuesta. – VonC

+2

El único comentario en la publicación que enlaza indica correctamente que la línea 'push = + refs/heads/*' * force * -pushes * all * your branches. Esto me mordió hace un momento, así que para tu información. –

-5

Esto funciona para mí:

git push --tags origin master 
Cuestiones relacionadas