Soy consciente de la razón por la que git push --tagses 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-tagsopción desde git 1.8.3--tagsno 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-tagssolo 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
--tagsopción con una especificación de referencia como:(ya que
--tagssignifica: todas las referencias debajorefs/tagsse 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-tagsbandera 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,simplecomo en stackoverflow.com/a/10002469/6309 ). Necesita agregar--follow-tagexplícitamente.git push --follow-tags -fNo funcionó para mí.--follow-tagsparámetro es engañoso ya que solo.git/refs/tagsse consideran las etiquetas debajo . Sigit gcse ejecuta, las etiquetas se mueven de.git/refs/tagsa.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-tagsopció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