Manejo de Branches con Interfaz Gráfica

Branches en Git

Las branches o rama corresponden a distintos conjuntos de cambios apilados bajo un nombre común. Se puede visualizar como una versión alternativa de tu repositorio, utilizado principalmente para guiar lineas de trabajo y así ordenar cambios.

Por ejemplo, en una aplicación móvil, se pueden una branch donde se guardan sólo las versiones compilables del proyecto, otra donde se suben las versiones beta, otra rama para trabajar en el backend y una para el frontend, entre muchas otras divisiones posibles.

Crear Branch en Git Kraken

Para crear una branch en Git Kraken se debe seleccionar el commit desde el cual iniciará, ya que se copiarán todos los archivos existentes y su estado en dicha versión. Para ello se hace click izquierdo sobre la representación de éste en la parte central de la ventana de trabajo.

Luego, desplegar el menú del click derecho del mouse y seleccionar Create branch here.

O bien, seleccionar el botón Branch en el menú horizontal superior del área de trabajo.

Se desplegará una casilla donde debe escribir el nombre para su rama, finalizando el proceso con la tecla Enter.

Ahora podrá visualizar su nueva branch en la área central, en un rectángulo con el nombre seleccionado y un icono de un computador, además de aparecer listado en los repositorios locales que se muestran en el área izquierda del sector de trabajo.

Sin embargo, la rama sólo se encuentra en su repositorio local; en el repositorio remoto aún no se genera dicha rama, por lo que es necesario indicar explicitamente la generación de ésta.

Para ello, se abre un menú haciendo click derecho sobre el nombre del branch, ya sea en la sección izquierda o en la parte central del área de trabajo.

Se acepta la confirmación de la labor presionando el botón Submit.

Y se obtiene finalmente la rama, tanto en el repositorio local como en el repositorio remoto.

Si se desea cambiar la branch en la que se está trabajando, basta con ir a la sección izquierda del menú de trabajo, y en la sección donde se listan los repositorios locales, realizar doble click izquierdo sobre la rama deseada.

Llevar Cambios de un Branch a Otro

Una vez que se hayan realizado cambios pertinentes, se formule el commit pertinente y se realice el push pertinente por primera vez en la rama, se solicitará una confirmación y se indicará explicitamente a que branch se está haciendo el commit. Para proceder, presionar el botón Submit.

Luego de realizar varios cambios dentro de una rama, es común el traspaso de ellos a otra rama, por ejemplo, cuando se termina de implementar una nueva funcionalidad de una aplicación móvil, se desea copiar ésta a la rama de las versiones beta de la aplicación, para un testeo más intensivo. En dichas situaciones, la herramienta que proporciona Git realizar tal acción es el comando Merge.

Para realizar un merge en Git Kraken, debe estar seleccionada la branch donde deseamos incorporar los cambios y realizar click derecho sobre la rama que contiene los cambios que deseamos incorporar. Se desplegará un menú y allí seleccionamos Merge Rama_con_cambios into Rama_Objetivo.

Terminada la operación, se realizará un nuevo commit que contendrá todos los cambios incorporados en nuestra rama objetivo.

Solucionar Colisiones en Branches

Es habitual al momento de trabajar con branches que se realicen cambios simultáneamente a un mismo archivo, pero en distintas ramas, ya sea por descuido o mala organización. En el ejemplo mostrado a continuación, en la rama master se ha comentado el método minus de la clase Vector2D, debido a que no es utilizado. Sin embargo, luego se trabaja en una rama dedicada a dicha clase, iniciada en un commit anterior al mencionado y después de otros cambios varios, se olvida lo realizado en la rama master y se decide eliminar completamente el método minus.

Al momento de tratar de llevar los cambios efectuados en la clase Vector2D a la rama master, se hace uso de Merge de igual manera que en el ejemplo anterior, pero en este caso, no se efectuará el commit, ya que se detectará ambos cambios sobre el método minus, no sabrá cual de ellos conservar y se producirá una colisión. Ante esto, se mostrará una ventana emergente señalando el error del proceso Merge.

Para abordar esta situación, ir a la sección derecha y realizar doble click izquierdo sobre el archivo que presenta el conflicto.

Se desplegará la herramienta de manejo de merge, la cual mostrará en dos columnas los archivos que presentan conflictos en las distintas ramas y destacará la sección específica donde se produce la colisión. Además, se muestra una columna bajo las ya mencionadas, donde se muestra el commit resultante después del merge.

Lo que permite realizar esta herramienta es seleccionar conflicto por conflicto el commit que se quiere utilizar para la sección relacionada con el conflicto. Esto se realiza marcando el checkbox que se encuentra a la izquierda de cada sección, o bien, el checkbox encontrado al lado del título de cada commit para conservar sólo los cambios propuesto por dicho commit.

Cada vez que se marca un checkbox, se refresca la vista del resultado y así uno puede ir selecionando cada opción, o inclusive ambas, y después de un análisis adecuado, determinar cual es el cambio que se desea conserva.

Terminada la edición del conflicto, se presiona el botón Save y se vuelve a la ventana de trabajo original, donde uno puede editar el mensaje del commit para el Merge y finalmente, aplicarlo utilizando el botón Commit and Merge.

Con esto se soluciona la colisión que afectaba a las ramas y se logra efectuar el Merge en el repositorio.

Uso del Stash

Cuando uno se encuentra trabajando en una rama y tiene cambios en el repositorio local sin ser preparados, generalmente Git no permite realizar cambios de branches, dado que no toma ninguna decisión sobre dichos cambios. Para abordar dichas situaciones, Git proporciona la herramienta Stash, la cual es un comando que permite el almacenamiento de cambios en un área que no se encuentra asociada a ninguna rama.

Siguiendo el ejemplo anterior, se ha creado una rama llamada Stage1_Ball en donde se trabajará el archivo Ball.java y se procede a definir sus métodos y constructores. Sin embargo, el usuario se percata que aún se encuentra trabajando en la rama Stage1_Vector, por lo que necesita cambiar de branch antes de hacer un commit.

En esta situación, se procede a hacer uso del Stash. Para iniciar el proceso, se hace click sobre el botón Stash que se encuentra en el menú superior.

Terminado el proceso, se mostrara en la sección central un ícono con forma de cajón, el cual indica la presencia de los cambios almacenados. Además, en la sección izquieda del área de trabajo también existe una lista de los cambios almacenados en Stash.

Almacenados los cambios, se procede a hacer el cambio de rama y ahora se desea recuperar dichos cambios para aplicarlo en un siguiente commit. Para ello, se hace uso del botón Pop, que se encuentra en el menú superior del área de trabajo.

Y de ésta manera vuelven nuevamente los cambios a nuestro repositorio y ya es posible realizar un commit de manera normal.

Ocultar Ramas en Git Kraken

Si se llega al punto de tener tantas ramas que comienza a ser difícil seguir adecuadamente el flujo de trabajo del repositorio, se puede configurar la vista de la ventana de trabajo, expandiendo o contrayendo el área que ocupan las ramas o en definitiva, ocultando los commits efectuados en una rama. Para hacer ello, hay que dirigirse a la sección izquierda de trabajo, ir a la lista del repositorio local y global y clickear sobre el ojo que se muestra a la izquiera del nombre de cada rama.

Desactivando tanto la rama del repositorio local como del remoto, se obtendrá el cambio de vista deseado.


Haciendo uso de todas las herramientas descritas anteriormente, es posible tener un mayor control sobre el repositorio y tener una representación más adecuada del flujo del proyecto.