¿Sabes cómo es la diferencia conceptual y usabilidad de tag y branch en git?

Respuesta corta:

A branch en Git es un puntero móvil a una confirmación específica que permite el desarrollo independiente y la fusión con la base de código principal, mientras que una tag es un marcador estático para una versión específica en el historial de Git que proporciona una forma de hacer referencia fácilmente a un código estable release.

Qué es una branch en Git

Una branch de Git es una forma de separar el trabajo en curso de la base de código principal. Permite a varios desarrolladores trabajar en diferentes características o correcciones de errores en paralelo, sin afectar la base de código principal. Las branchs son livianas y se pueden crear, fusionar y eliminar fácilmente, lo que las hace ideales para el trabajo diario de desarrollo.

branchs Git
branchs Git

En un flujo de trabajo de desarrollo de software típico, cada desarrollador creará una branch para su característica o corrección de errores. La branch es donde hacen su trabajo y se comprometen a registrar sus cambios. Una vez que se completa el trabajo, la branch puede ser revisada y probada por otros miembros del equipo antes de volver a fusionarse en la base de código principal. Esto permite una fácil colaboración y hace posible trabajar en múltiples tareas simultáneamente.

El uso de branchs de esta manera puede ayudar a mantener estable la base de código principal, reducir los conflictos y facilitar la reversión de los cambios si es necesario. En general, es una buena práctica crear una nueva branch para cada pieza de trabajo por separado y volver a fusionar las branchs en la base de código principal tan pronto como estén terminadas.

Para usar branchs en Git, puede crear una nueva branch con el comando git branch y cambiar a ella con git checkout. A continuación, puede realizar cambios y confirmarlos en su branch. Cuando esté listo para volver a combinar los cambios en la base de código principal, puede usar el comando git merge.

¿Qué es una tag en Git?

Una tag de Git es una forma de marcar una versión específica de su base de código, proporcionando una forma de hacer referencia fácilmente a una versión estable o un punto específico en el historial de Git. A diferencia de las branchs, las tags son inmutables, lo que significa que no se pueden cambiar después de ser creadas. Esto los hace útiles para marcar lanzamientos, ya que proporciona una forma de volver fácilmente a un buen estado conocido si es necesario.

Git Tags
tags Git

En un flujo de trabajo de desarrollo de software, las tags se utilizan normalmente para marcar lanzamientos o hitos específicos. Por ejemplo, puede tagr una versión del código cuando esté listo para enviarse a producción. La tag proporciona una referencia permanente a esa versión del código, lo que facilita volver a esa versión si es necesario.

El uso de tags de esta manera puede ayudar a realizar un seguimiento de las diferentes versiones de su base de código, lo que facilita la reversión a una versión anterior si es necesario. En general, es una buena práctica tagr cada lanzamiento, para que tenga un registro permanente de la versión específica que se envió a producción.

Para usar tags en Git, puede crear una nueva tag con el comando git tag . A continuación, puede enviar la tag a su repositorio remoto, para que otros miembros del equipo tengan acceso a ella. Cuando desee volver a una tag específica, puede usar el comando git checkout para cambiar a la versión tagda.

Git branch vs tag

Entonces, en breve:

  • Tag es solo una tag, generalmente dentro de una branch específica que define una situación en un momento dado.
  • branch, es una ramificación en paralelo a otra ruta o “grupo de código” que potencialmente se incorporará al desarrollo principal, o más bien especificará, la branch main.

La tag generalmente marca un lanzamiento, una versión u otro hito del proyecto similar. Así que la tag es solo una label para un commit específico, mientras que una branch es una ruta, una ramificación de desarrollo.

En Git no hay “costo” en la definición de una tag, son un marcado simbólico y no ocupan espacio en el repositorio. No cambia lo que está en la tag. Se usará eventualmente, cuando haya algún evento de desarrollo importante que necesite esta marca para volver a él otras veces. Por lo general, este evento es un release.

El trabajo de desarrollo siempre se realiza en las branchs a través de commits.

Es en branchs que se realiza la ‘fusión’ (merge), a partir del estado/cambios anteriores con lo desarrollado.

Se está agregando una branch de las evoluciones de desarrollo.

Una buena práctica es la creación de una nueva branch siempre que sea posible, cuando se iniciará una nueva línea de desarrollo.

La siguiente imagen muestra visualmente el historial de un repositorio Git con sus tags y branchs:

HISTORIAL DE CONFIRMACIONES EN branchS EN GIT
HISTORIAL DE CONFIRMACIONES EN branchS EN GIT

También puede definir una branch _ como una branch de su “árbol” principal de desarrollo_, generalmente creada para trabajar en el desarrollo de correcciones o nuevas implementaciones.

Al finalizar el trabajo para ese contexto, podemos hacer un MERGE para la branch principal de su proyecto.

Conclusiones

La branch se encarga de recibir las modificaciones durante el contexto de desarrollo, con cada nueva funcionalidad es recomendable generar nuevas branchs. Cuando el proyecto ya está maduro y estable se genera una nueva versión que será almacenada o marcada por una tag de repositorio.