Como trabajar con Ramas en Git y Github

trabajar-ramas en git

Como trabajar con Ramas en Git y Github

En este artículo hablaremos de cómo trabajar con Ramas en Git y Github. Git es el sistema de control de versiones más famoso y GitHub es un servicio de alojamiento para repositorios de Git. Se dice también de Github que es una red social para desarrolladores.

En un artículo anterior aprendimos como instalar Git y los comandos básicos esenciales para usar Git . Y hoy, nos vamos a centrar en cómo trabajar con ramas en Git y porque es útil.

¿Qué es una Rama o Branch en inglés?

Una rama en Git es similar a la rama de un árbol. De manera análoga, la rama de un árbol está unida a la parte central del árbol llamada tronco. Si bien las ramas pueden generarse y caerse, el tronco permanece compacto y es la única parte por la cual podemos decir que el árbol está vivo y en pie.

¿Por qué es necesario crear Ramas en Git?

Cojamos el ejemplo del desarrollo de un software, en el cual se identifica un error o una característica que falta. Debido a que el software ya está en uso de producción, no se puede realizar cambios en el código principal del software. Por lo tanto, se crea una rama segunda rama para abordar estos problemas, que eventualmente se fusionarán con la rama principal para la próxima versión del software. Esto asegura que el código de otras personas no se rompa cada vez que se corrige un error.

De manera que una rama en Git es una forma de seguir desarrollando y codificando una nueva característica o modificación del software sin afectar la parte principal del proyecto. También podemos decir que las ramas crean otra línea de desarrollo en el proyecto

La rama principal en Git es la rama master o main (similar a un tronco del árbol) . Tan pronto como se crea el repositorio, también lo hace la rama principal.

 

rama-master-main-git

Las ventajas de trabajar con ramas en Git

Las ramas  de Git vienen al rescate en muchos lugares diferentes durante el desarrollo de un proyecto. Como se mencionó anteriormente, las ramas crean otra línea de desarrollo que es completamente diferente o está aislada de la rama principal principal estable. Hay muchas ventajas al hacerlo.

Desarrollo lineal de un proyecto con Git

Si desarrollas un proyecto mediante desarrollo lineal, comenzar a implementar cambios en el mismo código registrando commits:

rama-master-con-commit-git

Mientras tanto, decides desarrollar otras funciones (commits en naranjo) y esperar la aprobación del cliente o del director de proyecto.

 

https://www.espai.es/blog/wp-content/uploads/2021/05/rama-git-main-commit

Si no se aprueban los cambios relativos a los commits azules y se solicita eliminarlos (indicado por el color gris que representa la eliminación).

commits-eliminados-rama-main-git

 

Ahora, dado que estabas siguiendo el método de desarrollo lineal, debes eliminar el código completo y pasar por el agitado proceso de ajustes y eliminar fallos repetidamente para lograr lo siguiente:

commit-validado-por-cliente-git-rama-main

 

Desarrollo con Ramas de un proyecto con Git

Si hubieras optado por un desarrollo con Ramas,

desarrollo-con-ramas-git

Dado que estabas siguiendo la estrategia de ramas, debes eliminar la rama y todo el código restante permanece como está. Los nuevos cambios se pueden agregar fácilmente a la rama maestra para lograr lo siguiente.

fusion-con-rama-master-git

 

Lista de los comandos para trabajar con varias ramas en Git:

Desde la consola de Windows, el terminal de Mac, el Bash de Git o incluso desde un repositorio remoto en Github podremos consultar el contenido de las ramas.

Comandos básicos para crear ramas en Git

Y desde una consola o terminal tendremos a nuestra disposición varios comandos para trabajar con ramas:

1-El comando git branch permite ver las ramas creadas

git branch

2-Para crear una rama añadiremos al comando git branch el nombre de la rama

git branch nombre-de-la-rama

3-Para comprobar las ramas que tenemos creadas, podemos utilizar el siguiente comando:

git branch --list

4-Para eliminar una rama:

git branch -d nombre-de-la-rama

5-Para cambiar de rama:

git checkout nombre-de-la-rama

6-Atajo para crear y cambiar de rama:

git checkout -b nombre-de-tu-rama

6-Subir una rama al repositorio remoto de Github (o otro):

git push -u origin nombre-de-tu-rama

NOTA: Para subir los cambios una vez el commit hecho habrá que ejecutar el comando git push.

Comandos para fusionar ramas en Git

Antes de fusionar ramas, es importante asegurarse con un git status de que no hayas cambios pendientes en repositorio local o en la área de preparación.

1-Tienes que asegurarte de estar en la rama Master/Main. Solo se puede fusionar desde esta rama

git checkout master

2-Ahora hay que fusionar la rama Main con la que no interesa

git checkout nombre-de-tu-rama

Como resolver un conflicto al fusionar ramas

Cuando fusionamos dos ramas (o fusiona una rama local y una remota), a veces puede surgir un conflicto. Por ejemplo, dos desarrolladores, sin saberlo, trabajan en la misma parte de un archivo. Uno de ellos envía sus cambios al repositorio remoto de Github. Cuando los lleve a su repositorio local, obtendrá un conflicto de fusión. Afortunadamente, Git tiene una forma de manejar los conflictos, por lo que puede ver ambos conjuntos de cambios y decidir cuál desea conservar.

1. Cuando tenemos un conflicto de fusión, toma nota de los archivos que tienen un conflicto.

2. En tu editor de código, abra un archivo en conflicto y busque estos marcadores de conflicto:

<<<<<<< HEAD
Marca el inicio de los cambios.

=======
Divide sus cambios de los cambios en la otra rama.

>>>>>>> branch-name
Marca el final de los cambios.

3. Después de editar el archivo, podemos usar el comando git add a para preparar el nuevo contenido fusionado

4. El paso final es crear una nueva confirmación con la ayuda del comando git commit

Veamos ahora los comandos de Git que pueden desempeñar un papel importante en la resolución de conflictos.

Comandos para resolver conflictos de fusión en Git

1-El comando git log –merge ayuda a producir la lista de confirmaciones que están causando el conflicto

git log --merge

2-El comando git diff ayuda a identificar las diferencias entre los repositorios o archivos de los estados

git diff

3-El comando git reset –mixed se usa para deshacer los cambios en el directorio de trabajo y el área de preparación

git reset --mixed

4-El comando git merge –abort ayuda a salir del proceso de fusión y volver al estado anterior a que comenzara la fusión

git merge --abort

5-El comando git reset se usa en el momento del conflicto de fusión para restablecer los archivos en conflicto a su estado original

git reset

Como hemos visto en este articulo, las ramas en Git te dan la libertad de trabajar de forma independiente en diferentes archivos (aunque no necesariamente) y fusionarlos cuando termines de desarrollarlos.

Además es un proceso fácil. Las ramas de git se crean y destruyen rápidamente. Un simple comando puede realizar estos procesos, y son muy económicos, considerando el tamaño que toman.

Las ramas en Git ayudan al equipo, que se encuentra en diferentes partes del mundo, a trabajar de forma independiente en desarrollos independientes que, en última instancia, se combinarían para producir un gran proyecto!

Escribe un comentario