Aprendiendo a utilizar Git y Github - Parte 3

in #spanish7 years ago

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 manual

En 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ódigo

La 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:

  1. Creamos la rama localmente primero mediante el uso del comando git branch rama-a-bajar.
  2. Nos cambiamos a dicha rama utilizando el comando git checkout rama-a-bajar.
  3. 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:


Todas las imágenes no citadas son de mi autoría

Sort:  

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!