Empuje confirmaciones y etiquetas de git simultáneamente
git push --tags
Es una operación separada, ya git push
que presionar etiquetas debe ser una elección consciente para evitar presionar accidentalmente la incorrecta. Está bien. Pero, ¿cómo los empujo a ambos simultáneamente/atómicamente? ( git push && git push --tags
no es perfectamente atómico).
Actualización agosto 2020
Como se mencionó originalmente en esta respuesta de SoBeRich , y en mi propia respuesta , a partir de git 2.4.x
git push --atomic origin <branch name> <tag>
(Nota: esto en realidad funciona con HTTPS solo con Git 2.24 )
Actualización mayo 2015
A partir de git 2.4.1 , puedes hacer
git config --global push.followTags true
Si se establece en verdadero, habilite la opción --follow-tags de forma predeterminada.
Puede anular esta configuración en el momento del envío especificando --no-follow-tags.
Como lo señaló en este hilo Matt Rogers respondiendo a Wes Hurd :
--follow-tags
solo empuja etiquetas anotadas .
git tag -a -m "I'm an annotation" <tagname>
Eso sería empujado (a diferencia de git tag <tagname>
una etiqueta liviana, que no sería empujada, como mencioné aquí )
Actualización abril 2013
Desde git 1.8.3 (22 de abril de 2013) , ya no tienes que ejecutar 2 comandos para enviar ramas y luego enviar etiquetas :
La nueva "
--follow-tags
" opción le dice "git push
" que inserte etiquetas anotadas relevantes cuando expulse ramas .
Ahora puedes intentar, al enviar nuevas confirmaciones:
git push --follow-tags
Sin embargo , eso no enviará todas las etiquetas locales, solo aquella a la que hacen referencia las confirmaciones que se envían con el archivo git push
.
Git 2.4.1+ (segundo trimestre de 2015) introducirá 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
, lo que empujaría a todos los árbitros hacia abajo refs/
.
También puedes insertar solo una etiqueta con tu confirmación de rama actual:
git push origin : v1.0.0
Puede combinar la --tags
opción con una especificación de referencia como:
git push origin --tags :
(ya que --tags
significa: todas las referencias siguientes refs/tags
se envían, además de las especificaciones de referencia enumeradas explícitamente en la línea de comando )
También tienes esta entrada " Empujar ramas y etiquetas con una única invocación "git push" "
Zoltán Füzesi acaba de publicar un consejo útil en la lista de correo de Git :
Yo uso
.git/config
para resolver esto:
[remote "origin"]
url = ...
fetch = +refs/heads/*:refs/remotes/origin/*
push = +refs/heads/*
push = +refs/tags/*
Con estas líneas agregadas
git push origin
se cargarán todas tus ramas y etiquetas. Si deseas subir sólo algunos de ellos, puedes enumerarlos.No lo he probado todavía, pero parece que podría ser útil hasta que se agregue alguna otra forma de enviar ramas y etiquetas al mismo tiempo a git push.
Por otro lado, no me importa escribir:$ git push && git push --tags
Cuidado , como comenta Aseem Kishore
push = +refs/heads/*
Empujará con fuerza todas tus ramas .
Esto me mordió hace un momento, así que para tu información.
René Scheibe añade este interesante comentario :
El
--follow-tags
parámetro es engañoso ya que solo.git/refs/tags
se consideran las etiquetas siguientes.
Sigit gc
se ejecuta, las etiquetas se mueven de.git/refs/tags
a.git/packed-refs
. Luego yagit push --follow-tags ...
no funciona como se esperaba.
Desde Git 2.4:
git push --atomic origin <branch name> <tag>