¿Cuál es el propósito de crear una etiqueta en lugar de crear una rama de lanzamiento permanente?

Una etiqueta es una característica más permanente. He visto demasiadas “ramas de liberación permanente” obtener registros accidentales.

Con Git, las etiquetas se pueden firmar, en cuyo caso, realmente no se pueden mover; tiene un registro inolvidable de exactamente a qué commit se hizo referencia. En este caso, también se requiere un mensaje de etiqueta. Esa ni siquiera es una opción para una sucursal.

Siempre puede usar una etiqueta para crear una rama, si necesita crear una versión de corrección de errores a partir de ella. O bien, puede crear ambos al mismo tiempo: la etiqueta representa la versión original y, a medida que se aplican las correcciones de errores, se registra en la nueva rama y se crean nuevas etiquetas en cada versión de corrección de errores.

La diferencia básica es que las ramas representan un desarrollo continuo y pueden evolucionar con el tiempo para señalar diferentes compromisos. Las etiquetas representan una única instantánea en el tiempo.

Una forma de verlo es si desea que el código diverja permitiendo el trabajo en paralelo.

Etiqueta: Instantánea de punto en el tiempo. Lineal, sin cambios, sin divergencia.

Rama: Ambos lados pueden cambiar y divergir.

Un enfoque común es usar solo etiquetas para lanzamientos menores y ramas + etiquetas para lanzamientos mayores. La versión principal actual y anterior puede obtener nuevos cambios al mismo tiempo, por ejemplo, correcciones de seguridad. Pero las versiones 1.2.3.4, 1.2.3.5 y 1.2.3.6 solo tienen cambios lineales menores. El 1.2.3.6 también tiene los cambios .4 y .5, pero la rama 2.x no tiene todas las confirmaciones 1.x.

Ese enfoque limita la cantidad de ramas que necesitan ser rastreadas, pero aún permite un fácil movimiento hacia atrás / adelante.