Curso de GIT y GITHUB desde 0 - Módulo 3 - Bifurcaciones

Curso de Git y GitHub

curso-git-github-modulo-3-bifurcaciones

En este tercer módulo del curso gratis de Git y GitHub vamos a profundizar en las Bifurcaciones también conocidas como ramificaciones o simplemente ramas, las mismas son una poderosa característica que tienen los sistemas de control de versiones, en especial Git porque facilita su usó frente a otros sistemas de control de versiones.

Vamos a crear ramas tanto en GitHub Desktop que es el cliente oficial de GitHub con interfaz gráfica y también en la terminal desde Git.

Curso completo: gburu.net/git-github

Temario: Módulo 3 - Bifurcaciones

  1. Objetivos del módulo 3
  2. ¿Qué son las Ramas?
  3. GitHub Desktop: crear una rama
  4. GitHub Desktop: subir la nueva rama al repositorio remoto
  5. GitHub: fusionar ramas y eliminar la rama creada
  6. Git: trabajar con ramas

Objetivos del Módulo 3

En esta tercera parte del curso de Git y GitHub, esta enfocada en que puedas comprender que son las ramas, como pueden ayudarnos, como y en que momento es bueno aplicarlas, realizar fusiones entre ramas para agregar los cambios a la rama principal de nuestro proyecto y también como eliminar ramas que no utilizemos. Todo esto desde GitHub Desktop y Git en la terminal.

¿Qué son las Ramas?

Cuando comenzamos un proyecto en Git de forma local o remoto, siempre tendremos la rama principal y por defecto "master" esta es la rama principal que tenemos, pero podemos tener mas ramas. Las ramas básicamente nos permiten poder tener un camino alterno en un proyecto, por ejemplo: tenemos una web en la rama master, y necesitamos solucionar un problema de forma rápida, no queremos realizar los cambios en la rama master ya que en ella tenemos la web de produción, aquí es donde sucede la magia. Simplemente creamos una rama nueva con el nombre "problema-1" y de forma rápida y automática tenemos todo nuestro proyecto como lo dejamos en el último commit que le realizamos a master, y ya podemos realizarle todos los cambios que querramos y guardarlos para poder realizar nuestra pruebas correspondientes, sin molestar o modificar el proyecto de producción que esta en la rama master, y si funciona nuestra solución que le aplicamos al proyecto en la rama problema-1, podemos realizar un fusión de ramas, y fusionamos la rama problema-1 con la master, de esta forma el proyecto en master ya tiene la solución al problema.


Ventajas de la ramificación

Gracias a las ramas, podemos tener un proyecto en master y le podemos agregar nuevas características sin tener que trabajar sobre la rama principal, simplemente creamos otra y cuando terminamos la nueva característica, la fusionamos. Del mismo modo se puede utilizar para solucionar problemas, y todo lo que quisieramos sin afectar la rama principal del proyecto.


Las fusiones

Poder fusionar ramas es algo increible porque puedes estar en una rama diferente a la de master y realizar muchos cambios si te gustan, los fusionas con master y listo. Pero no todo siempre sale bien, hay 2 respuestas que vamos a recibir a la hora de intentar fusionar ramas:

  1. Fast Forward: es un algoritmo que analiza los archivos que modificaste por última vez en cada rama que vas a fusionar, por ejemplo: imaginemos la web de Pakito que tiene 3 archivos (index.html, index.js y main.css), si en la rama master pakito modifico el HTML y en la rama nueva que creo modifico el CSS, a la hora de fusionar las ramas se aplicara el algoritmo Fast Forward, porque se modificaron archivos diferentes en cada rama.
  2. Manual Merge: tendremos esta respuesta por parte de Git, cuando modifiquemos los mismos archivos en cada rama que vamos a fusionar, como el ejemplo anterior de Pakito, ahora el modifico el index.html en las 2 ramas que intenta fusionar, Git detecta esto automáticamente y como es inteligente te pide que seleciones cual es el mejor archivo HTML para que se fusione, si el archivo index.html que modificaste en master o el index.html que modificaste en la nueva rama.

GitHub Desktop: crear una rama

Como mencionamos anteriormente la rama principal y por defecto es la master, en este caso nuestro proyecto almacenado en github.com/gpost1/git-github-2 tenemos que cambiarle la forma de como se genera el titulo del blog, como no sabemos si resultará el cambio vamos a crear una nueva rama llamada 'git-github-rama-1', mediante los siguiente pasos:

  1. Crear nuestra nueva rama en GitHub Desktop:
    curso-git-github-modulo-3-bifurcaciones-1
    curso-git-github-modulo-3-bifurcaciones-2
    curso-git-github-modulo-3-bifurcaciones-3
  • Ya tenemos nuestra nueva rama creada y vemos que la estamos usando.
  1. Ahora vamos a modificar el archivo 'index.hbs' para cambiar la forma que se genera el título del blog:
    curso-git-github-modulo-3-bifurcaciones-4
  2. Luego realizamos un commit, como vimos en el módulo anterior del curso:
    curso-git-github-modulo-3-bifurcaciones-5

GitHub Desktop: subir la nueva rama al repositorio remoto

Ya tenemos la rama creada de forma local, ahora queremos subirla al repositorio remoto alojado en GitHub para compara los cambios respecto a la rama 'master' o simplemente para que nuestros compañeros de equipo vean nuestra rama con los cambios que aplicamos al proyecto base, para una futura posible fusión, si los cambios son productivos para nosotros o nuestro equipo.

  1. Luego de haber realizado el commit y vamos a 'Publish branch':
    curso-git-github-modulo-3-bifurcaciones-6
  2. Si vamos a nuestro repositorio en la web, vemos que ahora tenemos 2 ramas:
    curso-git-github-modulo-3-bifurcaciones-7
    curso-git-github-modulo-3-bifurcaciones-8
  3. Ahora vamos a comparar los cambios con la rama master:
    curso-git-github-modulo-3-bifurcaciones-9
    curso-git-github-modulo-3-bifurcaciones-10

GitHub: fusionar ramas y eliminar la rama creada

Para fusionar los cambios que hicimos en la rama 'git-github-rama-1' simplemente tenemos que fusionarla con la rama 'master', en Git esto se logra gracias a 'merge', lo veremos cuando lo hagamos en la terminal. Ahora vamos a fusionar 2 ramas por medio de GitHub y luego vamos a eliminar la rama que habiamos creado ya que se pudo fusionar perfectamente con la rama principal y ya no la utilizaremos mas.

Vamos a necesitar abrir una solicitud de extracción (Pull request), es el paso anterior a fusionar una rama, en este paso git va a analizar nuestra rama para saber si esta en buen estado para una fusión si lo esta podemos continuar hacia una fusión. De lo contrario, tendremos que ver que fallo se esta produciendo para repararlo.

  1. Crear un 'Pull request':
    curso-git-github-modulo-3-bifurcaciones-11
    curso-git-github-modulo-3-bifurcaciones-12
  2. Podemos ir a 'Pulls requests':
    curso-git-github-modulo-3-bifurcaciones-13
  3. Fusionar las ramas:
    curso-git-github-modulo-3-bifurcaciones-14
    curso-git-github-modulo-3-bifurcaciones-15
  4. las ramas fueron fusionadas con exito, ahora vamos a eliminar la que ya no necesitamos:
    curso-git-github-modulo-3-bifurcaciones-16
    curso-git-github-modulo-3-bifurcaciones-17
    curso-git-github-modulo-3-bifurcaciones-18
  • Ya creamos una nueva rama, le aplicamos cambios al proyecto y ahora la fusionamos con la rama master para luego eliminar la rama que ya no necesitabamos.

Git: trabajar con ramas

Ahora nos toca realizar los mismos procedimientos pero desde la terminal o consola de comandos utilizando Git, para crear una rama desde Git 2 formas: git branch <nombre-rama> o git checkout -b <nombre-rama, este último sirve para unir 2 comandos el branch y luego el checkout, el branch sirve para crear ramas y el checkout para acceder a las mismas.

  1. Vamos a comprobar si hay ramas, y cuales estamos usando git branch:
    curso-git-github-modulo-3-bifurcaciones-19
  • Vemos que hay 2, y estamos utilizando la 'git-github-rama-1'.
  1. Cambiar a la rama 'master', para hacer esto solo basta con ejecutar git checkout master master puede ser cualquier nombre de rama a la que te quiras cambiar:
    curso-git-github-modulo-3-bifurcaciones-20
  2. Actualizar repositorio local con el remoto git fetch https://github.com/gpost1/git-github-2.git:
    curso-git-github-modulo-3-bifurcaciones-21
  3. Crear una rama nueva y acceder a ella con git checkout -b rama-2:
    curso-git-github-modulo-3-bifurcaciones-22
  4. Ahora que estamos en la rama 'rama-2' vamos a modificar un archivo y a realizarle un commit:
    curso-git-github-modulo-3-bifurcaciones-23
  • Lo que hice fue quitar la descripción del Blog en el archivo index.hbs, luego realize un commit como vimos en el módulo anterior pero esta vez desde la nueva rama que creamos
  1. Los cambios fueron aceptados, ahora vamos a fusionar las ramas: 'rama-2' con 'master'. Para eso, vamos a utilizar git merge <nombre-rama>. Antes que nada hay que volver a la rama master, para luego pedirle que fusione su contenido con la 'rama-2':
    curso-git-github-modulo-3-bifurcaciones-24
  • La fusion fue un exito.
  1. Eliminar ramas que no necesitamos con git branch -D <nombre-rama>:
    terminal8--1-
  • Ya eliminamos 2 ramas que no necesitabamos mas.

Terminamos este módulo, ahora puedes crear ramas, aplicarle cambios, fusionarlas y eliminarlas con GitHub Desktop o Git desde la terminal. Nos vemos en el próximo módulo de este curso de Git y GitHub gratuito, puedes compartir este módulo en las redes sociales o dejar tu comentario!!

Tenemos más cursos para vos en: gburu.net/cursos

¡Dejá tu Comentario!