¿Por qué debería usar tags vs. versiones / twigs beta para el control de versiones?

He estado usando git durante aproximadamente un año y me gustaría usar el labeldo para, bueno, labelr confirmaciones en diferentes versiones. Encontré mucha información sobre los commands que debo usar para trabajar con tags, pero lo que me gustaría saber es por qué usar el labeldo si puedo crear una nueva twig llamada 1.1.0 y no tener que nublar mi mente. con un nuevo set de commands git?

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

Las tags se utilizan principalmente para futuras references a la versión específica del proyecto, mediante el labeldo de un compromiso. Siempre puede usar twigs, por supuesto, pero si cambia muchas versiones, terminará con muchas twigs no utilizadas o raramente usadas.

Prácticamente, las tags son twigs sin twigs de todos modos, solo agregan una forma de referencer una versión específica del proyecto para networkingucir la complejidad.

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

Una label es inmutable .

Mientras que puede crear una twig llamada "1.0.0", usted, o cualquiera con derechos de compromiso, también puede simplemente presionar esa twig (deliberadamente o no) y cambiar lo que significa 1.0.0.

No puedes hacer eso con una label, una vez que creas una label, eso es todo; Tag 1.0.0 significa exactamente eso y no se puede cambiar * .

Esa es la principal diferencia práctica entre una label y una twig

* Puede eliminar y volver a crear una label cambiando así una label, pero ciertamente no por crash.

Tiendo a usar un flujo de trabajo que incorpora tags y twigs. Las tags son buenas para marcar código publicado o desarrollos de desarrollo notables. Las sucursales son buenas para realizar un seguimiento de todos los cambios relevantes para una versión específica.

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

Utiliza tags para anotar compromisos importantes en la historia. "Esta fue la confirmación exacta que utilizamos para esta versión el jueves lluvioso cuando se rompió el server de compilation". Si usa una bifurcación en lugar de una label, nunca podrá saber qué compromiso exacto utilizó. Solo se sabe "Lanzamos la versión 1.1.0 en algún lugar de esta twig", a less que escriba manualmente el hash exacto para esa confirmación, que es la razón por la que utiliza las tags en primer lugar 🙂

La twig y la label son lo mismo (puntero a una confirmación, también conocido como "ref" ), excepto que la twig se mueve automáticamente al siguiente compromiso mientras que la label permanece para siempre 1 en la misma confirmación.

Al realizar un lanzamiento, generalmente desea marcar la "instantánea" del código desde el que se creó el lanzamiento, y desea que permanezca marcado de esa manera incluso mientras continúa evolucionando el código, por lo que usaría una label.

Si intentó usar una twig para eso, podría pasar inadvertidamente a una confirmación diferente, de la cual no se creó la versión.


1 A less que elimines la label, por supuesto.

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