remota - ¿Cómo se empuja una etiqueta a un repositorio remoto usando Git?
git push example (10)
He clonado un repositorio remoto de Git en mi computadora portátil, luego quise agregar una etiqueta para ejecutar
git tag mytag master
Cuando ejecuto git tag
en mi laptop, se muestra la etiqueta mytag
. Luego quiero enviar esto al repositorio remoto para tener esta etiqueta en todos mis clientes, así que ejecuto git push
pero recibí el mensaje:
Todo actualizado
Y si voy a mi escritorio y ejecuto git pull
y luego git tag
no se muestran etiquetas.
También he intentado hacer un cambio menor en un archivo en el proyecto y luego enviarlo al servidor. Después de eso, pude extraer el cambio del servidor a mi computadora de escritorio, pero todavía no hay ninguna etiqueta al ejecutar la git tag
en mi computadora de escritorio.
¿Cómo puedo insertar mi etiqueta en el repositorio remoto para que todos los equipos cliente puedan verla?
Estoy usando git push <remote-name> tag <tag-name>
para asegurarme de que estoy presionando una etiqueta. Lo uso como: git push origin tag v1.0.1
. Este patrón se basa en la documentación ( man git-push
):
OPTIONS
...
<refspec>...
...
tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.
Las etiquetas no se envían al repositorio remoto mediante el comando git push. Necesitamos enviar estas etiquetas explícitamente al servidor remoto usando el siguiente comando:
git push origin <tagname>
Podemos empujar todas las etiquetas a la vez usando el siguiente comando:
git push origin --tags
Aquí hay algunos recursos para detalles completos sobre el etiquetado de git:
Para ampliar la respuesta de Trevor , puede insertar una sola etiqueta o todas sus etiquetas a la vez.
Empuje una sola etiqueta
git push <remote> <tag>
Este es un resumen de la documentación relevante que explica esto (algunas opciones de comando omitidas por brevedad):
git push [[<repository> [<refspec>…]] <refspec>...
El formato de un parámetro
<refspec>
es ... la referencia de origen<src>
, seguido de dos puntos:
seguido de la referencia de destino<dst>
...La
<dst>
indica qué referencia en el lado remoto se actualiza con este empuje ... Si se omite:<dst>
, la misma referencia que<src>
se actualizará ...etiqueta
<tag>
significa lo mismo querefs/tags/<tag>:refs/tags/<tag>
.
Empuja todas tus etiquetas a la vez
git push --tags <remote>
# Or
git push <remote> --tags
Aquí hay un resumen de la documentación relevante (algunas opciones de comando omitidas por brevedad):
git push [--all | --mirror | --tags] [<repository> [<refspec>…]] --tags
Todos los refs bajo
refs/tags
son empujados, además de refspecs explícitamente listados en la línea de comando.
Para empujar específico, una etiqueta sigue git push origin tag_name
Para empujar una sola etiqueta:
git push origin <tag_name>
Y el siguiente comando debe empujar todas las etiquetas (no recomendado):
git push --tags
Puedes empujar las etiquetas como esta git push --tags
Puedes empujar tus etiquetas locales simplemente con el comando git push --tags
.
$ git tag # see tag lists
$ git push origin <tag-name> # push a single tag
$ git push --tags # push all local tags
Si estás trabajando en una sucursal:
git push --tags origin branch_name
git push --follow-tags
Esta es una opción sensata introducida en Git 1.8.3:
git push --follow-tags
Empuja tanto las confirmaciones como las etiquetas que son ambas:
- anotado
- alcanzable (un antepasado) desde los compromisos presionados
Esto es cuerdo porque:
- solo debe insertar etiquetas anotadas en el control remoto y mantener etiquetas ligeras para el desarrollo local para evitar choques de etiquetas. Ver también: ¿Cuál es la diferencia entre una etiqueta anotada y no anotada?
- no empujará etiquetas anotadas en ramas no relacionadas
Es por esas razones que se deben evitar las --tags
.
Git 2.4 ha agregado la opción push.followTags
para activar esa bandera de manera predeterminada que puede configurar con:
git config --global push.followTags true
No lo use, si solo está buscando un comando porque la intención principal de esta solución es presentarle una forma de solución.
Para hacer la vida más fácil, escribí un script git-cheat-sheet , que contiene algunos comandos útiles, que incluyen los siguientes:
./git_commands.sh -push_tag TAG_NAME