La ramificación es una de las características más importantes de Git, ya que permite a los desarrolladores trabajar de manera eficiente y colaborativa en un proyecto, así como aprovechar todas las ventajas que ofrece. En esta experiencia educativa, entenderás cómo funciona la ramificación en Git y cómo se puede utilizar para trabajar de manera independiente en diferentes funcionalidades o aspectos del proyecto, mientras que el código principal permanece intacto.
De igual manera, aprenderás a crear ramas, cambiar entre ellas y fusionar los cambios de una en otra. Finalmente, revisarás conceptos básicos de ramificación, como rama principal (también denominada master) y las diferentes versiones del código que crearás a partir de un punto específico.
La ramificación en Git es una característica que permite crear versiones de un proyecto o repositorio de forma independiente entre sí, es decir, sirve para trabajar en varias funcionalidades al mismo tiempo, sin afectar el código o repositorio principal.
En Git, las ramas se utilizan para separar las versiones del proyecto y luego fusionarlas en una sola. Cada rama cuenta con su historial de commits y sus propios archivos, aunque es posible cambiar entre ellas y fusionar los cambios de una en otra. En general, Git ofrece gran flexibilidad para manejar ramificaciones y fusiones, ya que permite a los desarrolladores trabajar de manera eficiente y colaborativa (Git, s.f.-a).
Git ignore
El comando "git ignore" sirve para especificar los archivos o directorios que debe ignorar Git durante el seguimiento de cambios; esto significa que no serán incluidos en los commits ni en las ramas, así que no se rastrearán ni controlarán sus versiones. Este procedimiento resulta muy útil cuando hay archivos que no se desea incluir en el repositorio, como temporales, de configuración, datos personales, carpetas públicas o bases de datos (Atlassian, s.f.-a).
Para utilizar el comando "git ignore", hay que crear un archivo llamado ".gitignore" en la raíz del proyecto y agregar las reglas de todo aquello que debe excluirse. Cada regla debe estar en una línea separada, es decir, si buscas ignorar todos los archivos con la extensión .log, necesitas agregar esta línea en el archivo “.gitignore”.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Para ignorar un directorio específico, se agrega la siguiente línea en el archivo “.gitignore”:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Una vez agregadas las reglas, se guarda el archivo y se hace commit de los cambios en el repositorio. A partir de ese momento, Git omitirá todo lo especificado.
Deshacer cosas
Git posee varios mecanismos para deshacer cambios, pero cada uno depende de la situación (Atlassian, s.f.-b). Algunas de las opciones más comunes son las siguientes:
Considera que algunos de estos comandos pueden eliminar cambios permanentemente, así que asegúrate de tener una copia de seguridad antes de utilizarlos. Se recomienda ensayar en una rama de prueba antes de aplicar cambios en la principal.
Eliminar archivos
Existen varias formas de eliminar archivos en Git, ya sea de forma local o remota (Atlassian, s.f.-d). Algunas de las más comunes son las siguientes:
A pesar de que se pueden borrar archivos por medio de Git, con frecuencia el desarrollador ejecuta esta acción mediante el administrador de archivos del sistema operativo, o bien con el editor; luego, utiliza los comandos “git add” para agregar el cambio al índice de Git y “gitcommit” para confirmarlos. Sin embargo, este método no se recomienda, ya que no crea automáticamente un commit de eliminado.
Renombrar archivos
Para renombrar un archivo en Git, se emplea el comando “git mv”, que mueve un archivo de su ubicación actual a una nueva y, en automático, crea un commit con el cambio de nombre.
Sintaxis:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Considera que el archivo original no estará disponible después de renombrarlo, ya que se ha movido a una nueva ubicación.
Otra forma de renombrar ficheros es por medio del administrador de archivos del sistema operativo, o bien con el editor; luego, se utilizan los comandos “git add” para agregar el cambio al índice de Git y “git commit” para confirmarlos. Sin embargo, este método no es recomendable, ya que no crea en automático uncommitde renombrado.
En ambos casos, debes asegurarte de que el archivo se ha renombrado correctamente y de que se está haciendo commitde los cambios en el repositorio.
Uso de ramas en Git
Las ramas en Git son una herramienta esencial para el desarrollo de software, pues sirven para organizar y separar el trabajo de diferentes partes de un proyecto. Al utilizarlas, se puede avanzar en diferentes características o funcionalidades del proyecto a la vez, sin afectar las acciones realizadas en la rama principal, por defecto llamada master (Keepcoding, 2023).
Cabe destacar que, al menos en Git, no se trata de una rama especial, sino que es como cualquier otra. Aparece en todos los repositorios recién creados por una razón muy simple: los usuarios no se molestan en cambiar su nombre al momento de iniciar un proyecto con “git init” (Git, s.f.-a).
En este sentido, al generar una nueva rama solo se crea un puntero al commit actual. Los cambios realizados en una no afectan a las demás, a menos que se unan mediante un “merge”. De igual manera, es importante hacer commits regulares para volver a cualquier punto del proyecto en caso de ser necesario.
Crear una nueva rama
Para crear una nueva rama se emplea el comando “git Branch”. Por ejemplo:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Cambiar de rama
Para cambiar a una rama existente se emplea el comando “git checkout”. Por ejemplo:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Procedimientos básicos de fusión
La fusión en Git es un proceso que une dos o más ramas en una sola. Esto permite combinar el trabajo realizado, normalmente en la rama principal. Durante la fusión, Git compara las modificaciones ejecutadas y las conjunta en una sola versión del proyecto (Git, s.f.-b). El procedimiento básico es el siguiente:
Cabe mencionar que Git intentará fusionar de forma automática los cambios, pero pueden surgir conflictos si en ambas ramas se han modificado los mismos archivos de diferente manera. En esos casos, es necesario resolver manualmente dichos inconvenientes antes de confirmar la fusión. Asimismo, debe establecerse una buena estrategia de ramificación para evitar problemas y fusiones difíciles.
Renombrar ramas
Para renombrar una rama en Git se emplea el comando “git branch -m”, que cambia el nombre de uno ya existente por uno nuevo (Git, s.f.-d).
Sintaxis:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Al renombrar una rama, se cambia el nombre del puntero a un commit en particular, es decir, ni este ni los cambios se trasladan a otra ubicación.
Otra forma de renombrar es crear una nueva rama con el nombre seleccionado y eliminar la antigua. En ambos casos, debes asegurarte de que el proceso se haga correctamente y de dar seguimiento a los cambios en el repositorio.
Eliminación de ramas
Se puede eliminar una rama innecesaria por medio del comando “git branch -d”. Por ejemplo:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.
Git Flow
Git Flow es una metodología para el manejo de ramas en Git. Fue desarrollada por Vincent Driessen en 2010 y es una extensión del flujo de trabajo de ramas estándar de Git (Atlassian, s.f.-c). Esta metodología sugiere la creación de ramas específicas para diferentes tipos de trabajo, como desarrollo, pruebas y producción; además, se basa en la idea de que todas las acciones deben realizarse en una rama de desarrollo y luego, al concluir, fusionarse en una de producción.
Las principales ramas de Git Flow son las siguientes:
Estos son algunos beneficios de utilizar Git Flow:
Considera que Git Flow no es la única forma de manejar ramas en Git, hay otras opciones y cada una puede resultar mejor dependiendo del proyecto y del equipo.
Ramas de largo recorrido
En Git, las ramas de largo recorrido son una técnica para desarrollar características o funcionalidades que requieren de un tiempo prolongado para completarse. Este método supone una alternativa a las ramas de desarrollo y ramas de características para proyectos de larga duración (Git, s.f.-c).
De esta manera, en lugar de generar ramas de características cortas, se crea una de largo recorrido para el desarrollo de una funcionalidad específica. Los desarrolladores trabajan en dicha rama durante un período prolongado, mientras agregan cambios y los fusionan a la rama principal.
Estas son algunas ventajas de usar ramas de largo recorrido:
Debes tener en cuenta que esta técnica requiere de una mayor planificación y control sobre los cambios realizados en la rama, ya que se trabaja en ella por un período prolongado.
Ramas puntuales
En Git, las ramas puntuales son elementos temporales para trabajar en una tarea específica o ensayar una idea. Se generan a partir de la rama principal y se utilizan para desarrollar una funcionalidad nueva o arreglar un error; una vez hechos los cambios necesarios, se fusionan otra vez con la principal. Esto permite avanzar de manera independiente en un aspecto concreto, sin afectar el código de la rama principal (Git, s.f.-c).
Principales conflictos que pueden surgir en las fusiones
A continuación, se listan los principales conflictos que pueden surgir al realizar fusiones de ramas en Git:
Para solventar estos inconvenientes, Git proporciona una herramienta de resolución que puedes usar para atenderlos de manera manual. Dicho instrumento te muestra los cambios realizados en ambas ramas y te permite seleccionar cuáles deben mantenerse. Presta atención a las líneas de código que se están fusionando y asegúrate de que los cambios sean coherentes y no causen errores en el sistema.
Además, existen herramientas de terceros (GitKraken, Sourcetree, entre otros) que facilitan la resolución de conflictos mediante una interfaz gráfica, ya que permiten al usuario seleccionar los cambios que desea mantener, rechazar o mezclar. Estas opciones facilitan sobrellevar cualquier detalle que se presente.
Las ramas son una herramienta de Git que te permite trabajar de manera organizada y eficiente en proyectos de desarrollo de software. Con ellas, puedes crear y mantener versiones separadas, lo que te permite enfocarte en funciones y características nuevas sin afectar el código principal.
En esta experiencia educativa aprendiste cómo crear ramas, cambiar entre ellas y combinarlas, así como los principios para resolver conflictos que puedan surgir durante el proceso de fusión. Además, revisaste la metodología Git Flow, que ayuda a la gestión de ramas en proyectos de desarrollo de software. Al comprender estos conceptos básicos de ramificación en Git, estarás listo para trabajar en la actividad guiada, en la que practicarás lo visto en este tema.
Asegúrate de:
Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.
Lecturas
Para conocer más acerca de Ramificación, te sugerimos revisar lo siguiente:
Videos
Para conocer más acerca de Ramificación, te sugerimos revisar lo siguiente: