Mi Blog
▷ Diferencias entre Git Fetch y Git Pull

Diferencias entre Git Fetch y Git Pull

 

Dos de los comandos más utilizados en Git para sincronizar el repositorio local con el remoto son git fetch y git pull. Aunque ambos sirven para actualizar el repositorio local con los cambios del repositorio remoto, tienen diferencias clave en su funcionamiento y en el impacto que tienen sobre el entorno de trabajo.

Seguid leyendo y os mostraré las diferencias entre git fetch y git pull además de aprender cuándo usar uno u otro...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES GIT?

Git es un programa que nos ayuda a guardar y controlar los cambios que hacemos con nuestros archivos y proyectos. Pensad en Git como una especie de máquina del tiempo para vuestro código: cada vez que guardáis (en Git se llama hacer un "commit"), Git recuerda cómo estaban vuestros archivos en ese momento. Si más adelante os equivocáis o queréis volver atrás, Git os dejará viajar a versiones anteriores.

¿Para qué sirve?

  • Guardar un historial completo de lo que has hecho en tu proyecto.
  • Volver a cualquier versión anterior si algo sale mal.
  • Trabajar con más personas al mismo tiempo sin pisarse los cambios.
  • Probar cosas nuevas sin miedo, porque puedes regresar al punto de partida.

 

Web Oficial: https://git-scm.com/

 

 

Git es distribuido, no centralizado.

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un equipo cualquiera con Windows, GNU/Linux o MacOS
  • GIT instalado
  • Un servidor de Git, por ejemplo, GitHub
  • Internet es recomendado

 

 

2.- ¿QUÉ ES GIT FETCH?

git fetch es un comando de Git que nos permite descargar los cambios más recientes desde el repositorio remoto, pero sin mezclarlos automáticamente con nuestra rama local. En otras palabras, git fetch actualiza nuestra copia local de las referencias remotas (como origin/main), pero no toca nuestro código actual ni tampoco nuestro historial local.

Funciones principales:

  • Descarga los commits, etiquetas (tags) y referencias actualizadas desde el repositorio remoto.
  • Nos permite revisar qué ha cambiado antes de aplicar esos cambios a nuestro trabajo local.
  • No altera el working directory (nuestro código actual).

 

 

3.- ¿QUÉ ES GIT PULL?

git pull es un comando de Git que se utiliza para descargar y fusionar automáticamente los cambios desde un repositorio remoto a nuestra rama local. En pocas palabras, es una combinación de dos comandos (git fetch + git merge):

Función principal

  • Descarga los commits más recientes desde el remoto.
  • Realiza automáticamente un merge entre la rama remota y nuestra rama local actual.
  • Si existen conflictos entre lo remoto y lo local, Git nos pedirá que los resolvamos.

 

 

4.- DIFERENCIAS ENTRE GIT FETCH Y GIT PULL

En la siguiente tabla, os muestro la comparativa de las diferencias entre git fetch y git pull.

Acción git fetch git pull
Descarga de cambios remotos ✅ Sí ✅ Sí
Realiza merge automático ❌ No ✅ Sí
Modifica el working directory ❌ No ✅ Sí
Recomendado para revisión previa ✅ Sí ❌ No
Riesgo de conflictos Bajo Medio/Alto

 

 

 

5.- CUANDO USAR GIT FETCH Y GIT PULL

En función de lo que queramos realizar, será mejor utilizar git fetch o git pull. En la tabla siguiente os indico cual es mejor para cada caso:

Situación ¿Qué usar? Por qué
Queremos ver qué hay de nuevo sin tocar nuestro código git fetch Seguro, no modifica archivos.
Queremos estar seguros de traer e integrar cambios git pull Directo, rápido.
Cuando trabajamos con muchas ramas al mismo tiempo git fetch Así puedes revisar cualquier rama sin cambiarte.
Queremos el máximo control sobre conflictos git fetch + merge o rebase Tú decides cómo se integra.
Cuando tenemos prisa o trabajamos solos git pull Menos comandos.

 

 

6.- EJEMPLOS DE GIT FETCH Y GIT PULL

A continuación, os pongo varios escenarios en el uso de git fetch y git pull

 

6.1.- TRABAJAMOS EN EQUIPO Y QUEREMOS REVISAR ANTES DE ACTUALIZAR (CASO SEGURO)

Este caso se aplica cuando por ejemplo tenemos código sin guardar o cambios sin commitear. Antes de hacer cualquier fusión, queremos ver qué es lo que hizo nuestro equipo. Para ello ejecutaremos el comando siguiente:

raul@debian:~/mirepo$ git fetch origin

 

 

¿Qué hace el comando anterior?

  • Git se conecta al remoto llamado origin.
  • Descarga los nuevos commits, pero no los mezcla con nuestro código local.
  • Nuestro código sigue igual.

 

 

Luego, si nos interesa, podemos revisar el historial remoto actualizado sin modificar nuestro propio directorio de trabajo con el comando:

raul@debian:~/mirepo$ git log origin/main

 

 

6.2.- SABEMOS QUE EL CÓDIGO ES SEGURO Y QUEREMOS SINCRONIZAR (CASO RÁPIDO)

Por ejemplo, sabemos que nuestro compañero subió código al repositorio y sabemos que no hay conflictos porque nosotros no hemos modificado nada. Entonces, ejecutaremos simplemente un git pull:

raul@debian:~/mirepo$ git pull origin main

 

 

¿Qué hace el comando anterior?

  • Descarga y mezcla los cambios automáticamente en nuestra rama main.
  • Si no hay conflictos, todo se actualiza.
  • Si hay conflictos, Git nos pedirá resolverlos.

 

 

6.3.- QUEREMOS BAJAR LAS ACTUALIZACIONES, PERO ESTAMOS EN OTRA RAMA

Si por ejemplo estamos en una rama llamada feature/nueva-funcion y queremos ver qué hay de nuevo en la rama main, sin afectar a nuestra rama actual, ejecutaremos:

raul@debian:~/mirepo$ git fetch origin

 

 

¿Qué hace el comando anterior?

  • Descargamos actualizaciones de main, desarrollo, y otras ramas que tengamos creadas.
  • Nuestra rama actual (feature/nueva-funcion) no cambia.

 

Si queremos comparar, podemos utilizar:

raul@debian:~/mirepo$ git diff feature/nueva-funcion origin/main

 

 

6.4.- TRABAJAMOS EN PRODUCCIÓN Y QUEREMOS EL MÁXIMO CONTROL DEL MERGE

Si vamos a actualizar el servidor de producción, pero preferimos revisar, hacer un backup y luego aplicar los cambios ejecutaremos:

raul@debian:~/mirepo$ git fetch origin
raul@debian:~/mirepo$ git merge origin/main

 

 

¿Qué hace el comando anterior?

  • Descarga los cambios.
  • Git nos deja revisar y hacer el merge manualmente.
  • Podemos resolver conflictos a nuestro ritmo.

 

 

6.5.- TRABAJAMOS SOLOS Y QUEREMOS ACTUALIZAR RÁPIDO

Si somos el único desarrollador y queremos descargar los cambios recientes desde el servidor remoto ejecutaremos:

raul@debian:~/mirepo$ git pull origin main

 

 

¿Qué hace el comando anterior?

  • Descarga y fusiona en un solo paso.
  • No hay riesgo de conflictos (porque nadie más toca el código).

 

 

ENJOY!


Raúl Prieto Fernández

Sitio Web: raulprietofernandez.net

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!