lunes, 10 de marzo de 2014

Ramas en Git

Este último fin de semana me dediqué a codear un poco en Python, colaborando para un proyecto Software Libre de Seguridad y la verdad que tuve que trabajar bastante con las ramas o branch en Git y la verdad es que estuvo genial.

La idea de hoy es recomendar que si se encuentran desarrollando un software por más grande o pequeño que crean que sea, utilicen un sistema de control de versiones, lo que les va a permitir tener mucha más transparencia en el desarrollo, van a poder tener un log de todos los cambios dentro de sus programas y esto va ya sea si se encuentran trabajando en equipo o solos y una de esas alternativas es Git.

Git es un sistema distribuído para realizar un seguimiento de los cambios que llevamos nosotros y nuestro equipo conforme pasa el tiempo. Una de las características de Git es el uso de branchs o ramas que nos permite organizar nuestro código.


En particular cuando me encuentro desarrollando un sistema, me gusta utilizar branch para aislar alguna nueva funcionalidad de la rama principal o master del desarrollo con el fin de mantener el orden a medida que el software crece.


Por ejemplo si queremos crear un branch:

$ git branch funcionalidad-nueva

ahora para trabajar sobre esta nueva rama hacemos lo siguiente:

$ git checkout funcionalidad-nueva

A partir de ahora podemos almacenar todos los commits que creamos que sean necesarias y todo esto como les comentaba antes sin efectuar cambios sobre la rama principal.

Con el pasar del tiempo o a medida que la funcionalidad crece es posible que tengamos la necesidad de cambiar de nombre al branch y esto lo podemos hacer de la siguiente manera

$ git branch -m <antiguo nombre> <nuevo nombre>

$ git branch -m funcionalidad-nueva issue314

con lo cuál el branch ahora se llamaría issue314.

Para poder listar los branch que se encuentran en nuestro repositorio local podemos ejecutar el siguiente comando:

$ git branch

si podemos observar la salida de este comando nos va a destacar el branch en el que estamos modificando.

Ahora bien, así como tenemos la posibilidad de ramificar el desarrollo en todo momento, tambien tenemos la posibilidad de fusionar esas ramas, por eso si realizamos varias modificaciones sobre la rama issue314 lo que podemos hacer para integrar esas modificaciones a la rama principal es lo siguiente.

$ git checkout master
$ git merge --no-ff issue314

Con esto vamos a poder integrar aquel código creado en issue314 a nuestro desarrollo principal y así continuar aislando las nuevas funcionalidades, probarlas e integrarlas.



Por supuesto que todo esto se vuelve más interesante cuando el desarrollo es en equipo y son muchos miembros los que estan trabajando en el código fuente, por eso los invito a ver dentro de GitHub como se encuentra el código del Kernel Linux (https://github.com/torvalds/linux/network)

Saludos!

No hay comentarios.:

Publicar un comentario

Entradas populares