miércoles, 5 de septiembre de 2012

Configurar Git y GitHub. Parte VI. Branch

Seguimos con el tema Git, y hoy vamos a repasar qué es y para qué sirve un branch.
Vamos a imaginarnos una situación: hemos desarrollado una clase para el tratamiento digital de imágenes (como la vista aquí) y la estamos gestionando con Git y GitHub. Es decir, tenemos una serie de funciones a las que le enviamos una imagen y nos devuelven la imagen modificada. Mientras seguimos el curso del desarrollo de la clase, nos apetece empezar a hacer un programa con interfaz gráfica que haga uso de nuestra clase, aclarando, nos apetece hacer un programa visual utilizando los métodos de nuestra clase. ¿Qué podemos hacer? ¿Creamos un repositorio nuevo o lo hacemos a partir del que tenemos con lo que ello conlleva?, es decir, alejarnos de nuestro fin original del repositorio (sólo hacer la clase). Pues ni una ni otra, podemos hacer una ramificación del proyecto, es decir, un branch. ¿Cómo hacerlo? Lo vemos ahora.


Primeramente entramos en nuestro repositorio base, en este caso se llama, Clase para tratamiento de imágenes:


Y ahora lo que queremos es hacer nuestro branch (nuestra ramificación), para empezar a crear una aplicación gráfica a partir de nuestra clase. Es decir, vamos a tener un branch principal denominado master, con la clase en cuestión, y un branch secundario desarrollado a partir del master al que le llamaremos AplicacionConInterfaz. Para hacerlo, simplemente vamos a crearlo en nuestro pc (localmente) y luego lo subiremos a GitHub haciendo un pull. Abrimos la consola (Git Bash) y no situamos en nuestro repositorio:
  • cd c:/users/luis/ClaseImagenes
A continuación, creamos nuestro branch denominado AplicacionConInterfaz:
  • git branch AplicacionConInterfaz


Y ya está creado. Ahora tenemos que situarnos en nuestro branch:
  • git checkout  AplicacionConInterfaz
Una vez nos hemos situado en el branch, hacemos un push para subir la información al servidor:
  • git push origin AplicacionConInterfaz
Con esto, si accedemos a GitHub veremos que se ha creado una nueva rama en nuestro proyecto:


Como hemos visto, es muy sencillo crear una nueva rama en nuestro proyecto. Ahora vamos a ver cómo gestionar todo para que los archivos que vayamos modificando o creando se asignen la branch master o al branch AplicacionConInterfaz. Primero, hemos de situarnos en el branch secundario (AplicacionConInterfaz) desde la consola:
  • git checkout AplicacionConInterfaz
Ahora accedemos a nuestra carpeta local y creamos un nuevo archivo de texto que se llame, por ejemplo, ArchivoBranchSecundario.txt:


Ahora vamos a hacer que esta información se suba al servidor:
  • git add -A     
  • git commit -a -m "Primer commit en nuestro branch secundario"
  • git pull origin  AplicacionConInterfaz
  • git push origin  AplicacionConInterfaz
Vamos a entrar en GitHub y nos daremos cuenta de que los cambios que hemos realizado sólo aparecen en la rama secundaria:

Dentro de la rama master no aparece el archivo ni el commit

Si accedemos a la rama secundaria:

Dentro de la rama secundaria aparece el archivo creado y el commit

Un último detalle, vamos a acceder a nuestra carpeta local con el repositorio y vamos a alternar entre los dos branches de la forma que dijimos (git checkout master o git checkout AplicacionConInterfaz), para ver qué sucede. Primeramente vamos a situarnos en el secundario, es decir, git checkout AplicacionConInterfaz:



A continuación, vamos a situarnos en la rama master, es decir, git checkout master:


¿Qué ha pasado? Al alternar entre los diferentes branches a través del comando checkout, se modifican los archivos de nuestra carpeta local mostrando los del branch master o del branch secundario (en este caso AplicacionConInterfaz).
Poco a poco estamos viendo todas las bondades y ventajas de hacer un control de versiones con Git y GitHub.

No hay comentarios:

Publicar un comentario