Git: enviar etiquetas a un repositorio remoto

Si ha estado usando Git durante una cantidad significativa de tiempo, probablemente ya sepa cómo enviar sus confirmaciones desde una rama local a un repositorio remoto...

Si ha estado usando Git durante una cantidad significativa de tiempo, probablemente ya sepa cómo enviar sus confirmaciones desde una rama local a un repositorio remoto. Pero, como sabrás, Git no solo rastrea las confirmaciones, también hay otros objetos/referencias, como etiquetas.

Estas etiquetas, que apuntan a un lugar específico en el historial de un repositorio, también se pueden enviar a repositorios remotos para que otros desarrolladores las usen o hagan referencia. Las etiquetas se pueden usar para muchas cosas, pero el caso de uso que más veo es usar etiquetas para marcar el número de versión del proyecto en un punto específico de la historia.

Para enviarlos a un repositorio remoto, tiene algunas opciones:

1
$ git push <repo-name> <tag-name>

Este comando enviará una sola etiqueta al repositorio remoto y, por lo general, es el método preferido, sobre el cual explicaré más a continuación.

La otra forma sería empujar todas las etiquetas al repositorio remoto:

1
$ git push --tags <repo-name>

No se recomienda esta forma porque es común que los desarrolladores tengan etiquetas antiguas o "malas" en sus repositorios locales que no necesitan estar en el remoto, por lo que se recomienda solo presionar explícitamente una etiqueta utilizando el primer método, y no todas las etiquetas a la vez.

Pero, ¿qué sucede si necesita mover una etiqueta a una confirmación diferente? Esto suele suceder cuando etiqueta accidentalmente la confirmación incorrecta o si olvida fusionar los cambios en el maestro antes de etiquetarlos. En este caso, querrás hacer lo siguiente:

  • Eliminar la etiqueta del repositorio remoto
  • Mover la etiqueta a la confirmación correcta
  • Empuje la etiqueta al repositorio remoto

En términos de comandos de Git, así es como se vería esa secuencia:

1
2
3
$ git push <repo-name> :refs/tags/<tag-name>
$ git tag -fa <tag-name> <commit-hash>
$ git push -f <repo-name> <tag-name>

El indicador -f es una abreviatura de --force, que deshabilita ciertas comprobaciones y permite que las referencias cambien, por ejemplo.

También puede omitir el argumento <commit-hash> del comando git tag si está etiquetando la confirmación más reciente. Personalmente, prefiero ser explícito con mis comandos de etiquetas para asegurarme de que siempre sé exactamente lo que estoy etiquetando, pero debes hacer lo que mejor te funcione.

Licensed under CC BY-NC-SA 4.0