En el post anterior vimos como hacer múltiples cambios en nuestro repositorio, visualizar estos cambios con git status
y git diff
y además vimos como gestionar nuestro repositorios remotos. Esta vez aprenderemos a utilizar las ramas o branches.
Fuente
Como ya hemos dicho en varias oportunidades anteriormente, las ramas en Git sirven para crear copias de nuestro repositorio sin modificar los archivos originales. Éstas forman una parte muy importante del flujo de trabajo en Git, ya que mediante su uso podemos realizar cambios bastante puntuales como por ejemplo: agregar caracteristicas nuevas a nuestro proyecto, probar nuevas herramientas y/o técnicas, arreglar un cierto bug, etc. Una vez que hayamos terminado de trabajar en dicha característica, podemos proceder entonces a unir esta rama que hemos creado, con alguna de las ya existentes. Veamos cómo hacer esto.
Visualizar ramas: git branch
Este comando lo utilizamos para ver todas las ramas que posee nuestro repositorio. Sin embargo, podemos escribir git branch <nombre>
y habremos creado una nueva rama con el nombre que le hayamos colocado. Para seguir avanzando en el tutorial, voy a crear una página web bastante sencilla. Voy a modificar mi archivo file1
para que se llama index.html
. Los pasos los pueden ver a continuación.
El comando
mv
de Linux me permite mover archivos de un sitio a otro, así como cambiar su nombre. Esto también se puede realizar de manera manualEn la imagen anterior he renombrado file1
a index.html
y he hecho un commit de dicho cambio. Actualmente mi archivo index.html
contiene una línea de contenido: <h2> Hello Steemit </h2>
. Pero por los momentos no quiero modificar esa línea hasta que haya hecho todos los cambios que quiero realizar, así que crearé una rama para hacer estos cambios.
Crear una nueva rama: git branch <rama>
He creado una nueva rama llamada basic-structure
la cual utilizaré para añadir el esqueleto básico de mi página web. La he creado mediante el comando git branch basic-structure
, y luego de haberla creado verifiqué que en efecto se había creado utilizando el comando git branch
, sin embargo aún seguía en la rama master
(denotado por el color verde que esta posee), así que he utilizado el comando git checkout
el cual nos permite pasar de una rama a otra. Al verificar nuevamente la salida luego de ejecutar git branch
, vemos que ahora la rama activa es basic-structure
.
Luego de editar un poco mi archivo index.html
, así es como luce:
Posterior a la edición del archivo, voy a realizar un commit para guardar los cambios que he hecho:
Sin embargo, estos nuevos cambios están en la rama basic-structure
, no en la master
que es la principal. Vamos a comprobarlo, pasándonos de nuevo a la rama master
ejecutando git checkout master
:
El comando
more
en Linux nos permite previsualizar el contenido de un archivo. Esto puede lograrse de igual manera abriendo el archivo de forma manual con algún editor de texto/códigoLa primera salida es el preview de index.html
estando en basic-structure
y la segunda salida es el preview de index.html
estando en master
.
Unir ramas: git merge
Como quiero que todos los cambios que he realizado en basic-structure
aparezcan en master
, vamos a unir o mezclar estas dos ramas mediante el uso de git merge
. Para hacer esto, nos posicionamos en la rama destino, en este caso master
. Y ejecutamos el comando git merge basic-structure
, este comando colocará los cambios que he realizado en basic-structure
dentro de master
:
Como podemos observar, al ejecutar git merge basic-structure
, se nos indica cuáles archivos han sido modificados. Y en efecto, al previsualizar index.html
, vemos que ahora si tiene el contenido que he agregado en basic-structure
.
Nota: tengan en cuenta que la operación de merge
no es conmutativa. En este caso, yo quería tener los cambios que realicé en basic-structure
en mater
. Pero si lo hubiese hecho al revés, es decir, haber ejecutado git merge master
habiendo estado en basic-structure
, probablemente se hubiese sobrescrito todos los cambios que realicé en index.html
y hubiese quedado nuevamente con la línea <h2> Hello Steemit </h2>
.
Subiendo y bajando ramas de Github
Supongamos que queremos que alguna rama que hemos creado aparezca en nuestro repositorio en Github, porque la queremos tener allí o porque queremos compartirla con alguien. Para lograr esto, solamente nos bastará con ejecutar el comando: git push nombre-de-tu-rama
, que en mi caso sería git push basic-structure
. Si dicha rama no existe en Github, al hacer push esta se creará automáticamente. Si ya existía, los cambios se actualizarán de manera adecuada.
Por otro lado, si queremos descargar una rama que existe en Github pero que no tenemos en nuestro repositorio local, nos bastará con seguir estos sencillos pasos:
- Creamos la rama localmente primero mediante el uso del comando
git branch rama-a-bajar
. - Nos cambiamos a dicha rama utilizando el comando
git checkout rama-a-bajar
. - Actualizamos nuestra rama local con el contenido que esta posee en Github con el comando
git pull rama-a-bajar
Eliminando ramas: git branch -D <rama>
Es normal que luego de trabajar un tiempo en nuestro repositorio, se empiecen a acumular ramas. Una vez que hayamos terminado de trabajar con una rama, es decir que hayamos de trabajar en una cierta característica, y estemos seguros que no vamos a utilizarla nuevamente en el futuro, podemos eliminar una rama ejecutando el comando git branch -D <rama>
.
Resumen
Esta vez hemos aprendido a utilizar una de las funcionalidades más útiles e importantes que tiene Git: las ramas. Un buen uso de las ramas nos permitirá desarrollar cualquier proyecto que nos propongamos de manera más eficaz y ordenada, sobre todo cuando estamos trabajando en un equipo. Cada quien tiene su flujo de trabajo al momento de utilizar Git, pero todos, de alguna forma u otra, terminan utilizando ramas.
Los comandos que hemos utilizado esta vez son:
git branch
: nos permite visualizar las ramas que tenemos en nuestro repositorio.git branch <rama>
: nos permite crear una rama nueva con el nombre que le indiquemos.git branch -D <rama>
: nos permite eliminar una rama.git checkout <rama>
: nos permite cambiar entre ramas.git pull <rama>
: nos permite actualizar una previamente existente en nuestro repositorio local con la información que se encuentre en Github.git push <rama>
: nos permite subir a Github una rama, junto con todos los cambios que hayamos realizado en ellas.
En el próximo post veremos qué son y cómo resolver un merge conflict: errores que ocurren al hacer merge de dos ramas.
Si tienes alguna duda acerca del procedimiento, o algún comentario al respecto, puedes dejarlo en los comentarios.
Post anteriores:
- ¿Qué es Github? ¿Por qué usarlo para organizar tu proyecto?
- Aprendiendo a utilizar Git y Github - Parte 1
- Aprendiendo a utilizar Git y Github - Parte 2
github
a home for programmers
Yeah :) Github is very important for every programmer, nowadays Git is a must in every company and project. Thank you for your comment!