git fetch y git pull, Diferencias y formas de uso

En esta pequeña guía aprendemos las diferencias entre git fetch y git pull. Cómo funcionan y cuando debemos utilizarlos.

Como ya hemos visto en anteriores entradas sobre git, trabajar en equipo implica que tendremos que trabajar con repositorios remotos. Para una guía detallada de como funcionan los repositorios remotos, puedes leer la guía: Uso de Repositorios Remotos con Git – Qué son, cómo trabajar, recuperar y sincronizar Repositorios de forma local y remota.

Estos repositorios remotos son aquellos que están alojados en la red y podemos tener configurados tantos como deseemos por proyecto. Veamos un ejemplo:

  • Estamos trabajando localmente en un proyecto para modificar un Plugin de WordPress.
  • Tenemos configurados varios repositorios remotos (preproducción, producción, etc …) donde se guardan los ficheros definitivos de proyecto.

Para comprobar nuestros repositorios remotos y la ubicación de estos hacemos uso del comando git remote -v.

A continuación vamos a ver que comandos nos van a permitir sincronizar nuestro repositorio local con el remoto seleccionado y las diferencias entre cada uno de ellos.

Git fetch + Git merge

El comando git fetch <repositorio> nos va a permitir recuperar todos los ficheros de un repositorio remoto que hayan sido modificados por otros colaboradores del proyecto y que actualmente no disponemos de ellos.

Git fetch tan sólo recupera la información del repositorio remoto y la ubica en una rama oculta de tu repositorio local, por lo que no la fusionará automáticamente con tu repositorio local. En este caso tenemos que saber que por cada repositorio remoto que tengamos configurado también tendremos una rama oculta de este.

Veamos como funciona con un ejemplo, donde realizamos un git fetch para recuperar la información del repositorio remoto.

Una vez se sincroniza el repositorio remoto con nuestro repositorio local, podemos consultar dicha información si nos movemos a la rama FETCH_HEAD.

Pero esto no quiere decir que hayamos acabado porque aún nos falta actualizar nuestro repositorio local con dichos cambios.  Por lo que vamos a realizar una comprobación de las ramas ocultas asignadas a nuestros repositorios remotos:

Y como último paso vamos a fusionar esta rama oculta (con la información contenida en FETCH_HEAD) con la rama local en la que estamos trabajando actualmente y para ello necesitamos hacer uso del comando git merge.

Y con esto ya tenemos sincronizado nuestro repositorio local con el remoto.

Git pull

El comando git pull es un atajo o una forma de abreviar todos los procesos que realizamos usando los comandos git fetch y git merge por lo que nos permite ahorrar tiempo.

Cuando realizamos un git pull estamos sincronizando y trayéndonos todos los cambios del repositorio remoto a la rama en la que estemos trabajando actualmente, sin necesidad de ejecutar ningún comando extra.

También nos puede ocasionar algún disgusto por lo que en proyectos grandes quizás sea mejor comprobar antes dichos cambios hacia una rama alternativa.

 

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.