Una rama, en el ámbito del control de versiones, es una copia de los archivos de un programa que se mantiene aislada del directorio principal (que también es considerado una rama) pero que sigue estando dentro del proyecto. Al proceso de crear una rama se le conoce como «ramificación». Las ramas pueden ser creadas a partir de otras y, porsteriormente, fusionadas con la rama principal.[1] Las ramas pueden clasificarse en la rama principal (la rama con la que se comienza el proyecto) y las ramas secundarias, creadas a partir de la rama principal y a partir de otras ramas secundarias.
Sistemas de control de versiones populares como Git incluyen comandos para crear y eliminar ramas, así como para solucionar posibles conflictos a la hora de ejecutar acciones de este tipo.[2][3]
Las ramas se diferencian de las bifurcaciones en que estas últimas son copias que se separan completamente del proyecto original: son independientes; por el contrario, las ramas son copias del código de un proyecto que no dejan de estar vinculadas al proyecto original, y dependen unas de las otras. Si se borra el código del proyecto original, todas las ramas desaparecen; las bifurcaciones, sin embargo, seguirán existiendo sin cambio alguno.[4]
Las ramas son útiles por muchos motivos:[5]