¿Por qué debería usar etiquetas frente a ramas release/beta para el control de versiones?


He estado usando git durante aproximadamente un año y me gustaría usar el etiquetado para, bueno, etiquetar confirmaciones en diferentes versiones. He encontrado mucha información sobre los comandos que usar para trabajar con etiquetas, pero lo que me gustaría saber es por qué usar el etiquetado si puedo crear una nueva rama llamada 1.1.0 y no tener que nublar mi mente con un conjunto completamente nuevo de comandos de git.

Tiene que haber muchas buenas razones para etiquetar en lugar de ramificar, pero me gustaría saber cuáles son esas ventajas.

Author: McCygnus, 2012-03-21

5 answers

Las etiquetas se utilizan principalmente para futuras referencias a la versión específica del proyecto, etiquetando un commit. Siempre puedes usar ramas, por supuesto, pero si cambias mucho las versiones, terminarás con muchas ramas sin usar o raramente usadas.

Prácticamente, las etiquetas son ramas sin ramas de todos modos, simplemente agregando una forma de hacer referencia a una versión específica del proyecto para reducir la complejidad.

Editar: Aquí es una buena manera de usar git que uso para todos mis proyectos.

 70
Author: Hakan Deryal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-21 18:02:48

Una etiqueta es inmutable.

Mientras que usted puede crear una rama llamada "1.0.0" - usted, o cualquier persona con derechos de confirmación, también puede simplemente empujar a esa rama (deliberadamente o no) y cambiar lo que significa 1.0.0.

No se puede hacer eso con una etiqueta, una vez que se crea una etiqueta - eso es todo; Etiqueta 1.0.0 significa exactamente eso y no se puede cambiar*.

Esa es la principal diferencia práctica entre una etiqueta y una rama

*puede eliminar y volver a crear una etiqueta por lo tanto, cambiar una etiqueta, pero ciertamente no por accidente.

 109
Author: AD7six,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-21 15:27:16

Tiendo a usar un flujo de trabajo que incorpora ambas ramas de etiquetas y. Las etiquetas son buenas para marcar código publicado o compilaciones de desarrollo notables. Las ramas son buenas para hacer un seguimiento de todos los cambios relevantes para una versión específica.

Aquí hay un buen resumen sobre este tipo de flujo de trabajo: http://nvie.com/posts/a-successful-git-branching-model /

 12
Author: Justin ᚅᚔᚈᚄᚒᚔ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-21 18:01:17

Branch y tag son la misma cosa (puntero a un commit, también conocido como. " ref " ), excepto que la rama se mueve automáticamente a la siguiente confirmación mientras que la etiqueta permanece para siempre1 en el mismo commit.

Al hacer una versión, generalmente desea marcar la "instantánea" del código a partir del cual se creó esa versión, y desea que permanezca marcada de esa manera incluso mientras continúa evolucionando el código, por lo que usaría una etiqueta.

Si ha intentado usar una rama para eso, podría moverse inadvertidamente a un commit diferente, a partir del cual la publicación fue no construida.


1 A menos que elimines la etiqueta, por supuesto.

NOTA: Me doy cuenta de que esta es una pregunta antigua, pero sentí que la similitud (y una diferencia crucial) entre las ramas y las etiquetas no se ha destellado en otras respuestas tan claramente como podría haber sido.

 8
Author: Branko Dimitrijevic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-02 14:38:11

Utilizas etiquetas para anotar confirmaciones importantes en el historial. "This was the exact commit we used for this version on that rainy thursday when the build server broke"(en inglés). Si usas una rama en lugar de una etiqueta, nunca podrás saber qué commit exacto usaste. Solo sabes "Publicamos la versión 1.1.0 en algún lugar de esta rama", a menos que escribas manualmente el hash exacto para esa confirmación, por lo que usas etiquetas en primer lugar:)

 6
Author: ralphtheninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-21 17:59:18