Soy consciente de la razón por la que git push --tags
es una operación separada de la vieja git push
. Empujar etiquetas debe ser una elección consciente ya que no desea empujar accidentalmente una. Esta bien. Pero, ¿hay alguna forma de unir ambos? (Aparte de git push && git push --tags
)
387
git push && git push --tags
?--follow-tags
opción desde git 1.8.3--tags
no distingue entre las etiquetas ligeros y anotados fuenteRespuestas:
Actualización de mayo de 2015
A partir de git 2.4.1 , puedes hacer
Como se señala en este hilo de Matt Rogers respondiendo a Wes Hurd :
--follow-tags
solo empuja etiquetas anotadas .Eso sería empujado (en lugar de
git tag <tagname>
una etiqueta ligera, que no sería empujada, como mencioné aquí )Actualización de abril de 2013
Desde git 1.8.3 (22 de abril de 2013) , ya no tiene que hacer 2 comandos para empujar ramas y luego empujar etiquetas :
Ahora puede intentar, al presionar nuevas confirmaciones:
Sin embargo, eso no empujará todas las etiquetas locales, solo la referenciada por commits que se empujan con el
git push
.Git 2.4.1+ (Q2 2015) presentará la opción
push.followTags
: consulte " ¿Cómo hacer que"git push
"incluya etiquetas dentro de una rama? ".Respuesta original, septiembre de 2010
La opción nuclear sería
git push --mirror
, que empujará a todas las referencias hacia abajorefs/
.También puede insertar solo una etiqueta con su confirmación de rama actual:
Puede combinar la
--tags
opción con una especificación de referencia como:(ya que
--tags
significa: todas las referencias debajorefs/tags
se insertan , además de las especificaciones especificadas explícitamente en la línea de comando )También tiene esta entrada " Empujar ramas y etiquetas con una sola invocación " git push "
Tenga cuidado , como se ha comentado por Aseem Kishore
push = +refs/heads/*
se obligará-empuja todas sus ramas .René Scheibe agrega este interesante comentario :
fuente
push = +refs/heads/*
de la línea empuja todas sus ramas. Esto me mordió justo ahora, así que para tu información.--follow-tags
bandera agregada en git 1.8.3, ¿puedo configurar mi instalación de git para que sea la predeterminada?push.default
( git-scm.com/docs/git-config ) puede definir acciones predeterminadas de empuje (nothing
,matching
,upstream
,simple
como en stackoverflow.com/a/10002469/6309 ). Necesita agregar--follow-tag
explícitamente.git push --follow-tags -f
No funcionó para mí.--follow-tags
parámetro es engañoso ya que solo.git/refs/tags
se consideran las etiquetas debajo . Sigit gc
se ejecuta, las etiquetas se mueven de.git/refs/tags
a.git/packed-refs
. Despuésgit push --follow-tags ...
ya no funciona como se esperaba.Quizás esto ayude a alguien:
fuente
@desde Git 2.4
git push --atomic origin <branch name> <tag>
fuente
Git GUI tiene un botón PUSH: perdona el juego de palabras y el cuadro de diálogo que abre tiene una casilla de verificación para las etiquetas.
Empujé una rama desde la línea de comando, sin etiquetas, y luego intenté nuevamente empujar la rama usando el
--follow-tags
opción descrita anteriormente. La opción se describe como las siguientes etiquetas anotadas. Mis etiquetas eran etiquetas simples.Arreglé algo, etiqueté el commit con la corrección, (para que los colegas puedan elegir la solución), luego cambié el número de versión del software y etiqueté la versión que creé (para que los colegas puedan clonar esa versión).
Git regresó diciendo que todo estaba actualizado. ¡No envió las etiquetas! Quizás porque las etiquetas no fueron anotadas. Quizás porque no había nada nuevo en la rama.
Cuando hice un empuje similar con Git GUI, se enviaron las etiquetas.
Por el momento, voy a empujar mis cambios a mis controles remotos con Git GUI y no con la línea de comandos y
--follow-tags
.fuente