Git fetch: qué es, cómo funciona y cómo usarlo

git fetch es un comando de Git que permite consultar si existen nuevos cambios en un repositorio remoto, como GitHub, y descargar esa información al repositorio local sin modificar los archivos con los que estamos trabajando. Es especialmente útil para conocer el estado del proyecto antes de decidir si queremos integrar esos cambios.

git fetch que es y como usar desde cero

1. ¿Qué hace git fetch?

El comando git fetch se utiliza para consultar y descargar los cambios existentes en un repositorio remoto, por ejemplo, en GitHub.

Cuando ejecutamos git fetch, Git obtiene información sobre:

  • Nuevos commits.
  • Nuevas ramas remotas.
  • Cambios en ramas existentes.
  • Actualizaciones que otras personas hayan enviado al repositorio.

Sin embargo, hay algo muy importante: git fetch no incorpora automáticamente esos cambios en nuestros archivos locales.

Es decir, podemos utilizar git fetch para saber qué ocurrió en GitHub sin modificar inmediatamente nuestro proyecto.

Por ejemplo, si otra persona realizó cambios en la rama main de GitHub, podemos ejecutar:

git fetch

Git descargará la información de esos cambios, pero nuestra rama local main no será modificada automáticamente.

2. ¿Cómo funciona?

Para entender git fetch, primero debemos diferenciar entre el repositorio local y el repositorio remoto.

Supongamos que tenemos:

Repositorio local              GitHub
       │                         │
       │                         │
       └────── git fetch ───────►│

Git consulta el repositorio remoto y obtiene información actualizada.

Después de ejecutar:

git fetch

podemos comparar nuestra rama local con la versión que existe en GitHub.

Por ejemplo:

main
 │
 ●──●──●
       │
       └── nuestra versión local

origin/main
 │
 ●──●──●──●──●
             │
             └── versión actualizada en GitHub

En este caso, Git puede detectar que en GitHub existen dos commits que todavía no tenemos integrados en nuestra rama local.

Pero nuestros archivos no cambian todavía.

Esto diferencia a git fetch de git pull.

2.3. git fetch vs git pull

Es una de las diferencias más importantes que debemos conocer.

Comando¿Consulta GitHub?¿Descarga información?¿Modifica nuestros archivos?¿Integra los cambios?
git fetchNoNo
git pullPuede hacerlo

Podemos resumirlo de esta manera:

git fetch
     ↓
Consulta GitHub
     ↓
Descarga información
     ↓
NO integra los cambios

Mientras que:

git pull
     ↓
Consulta GitHub
     ↓
Descarga cambios
     ↓
Integra los cambios

Por eso, git fetch es una opción más segura cuando primero queremos revisar qué cambió antes de incorporarlo.

3. ¿Cómo usar git fetch paso a paso?

3.1. Abrir el proyecto

Primero debemos abrir en VS Code el proyecto que está conectado con nuestro repositorio de GitHub.

También podemos abrir una terminal y entrar en la carpeta del proyecto:

cd mi-proyecto

3.2. Abrir la terminal

En Visual Studio Code podemos abrir la terminal desde:

Terminal → New Terminal

También podemos utilizar el atajo:

Ctrl + Ñ

Una vez abierta la terminal, debemos comprobar que estamos dentro del repositorio Git.

Podemos ejecutar:

git status

Si Git reconoce el proyecto, mostrará información sobre la rama actual y su estado.

3.3. Ejecutar git fetch

Ahora podemos consultar el repositorio remoto:

git fetch

Git se conectará con el repositorio remoto configurado y descargará la información disponible.

Si no existen nuevos cambios, es posible que Git simplemente no muestre ningún mensaje relevante.

Eso no significa que el comando haya fallado.

Significa que no encontró información nueva que descargar.

3.4. Consultar qué cambió

Después de ejecutar git fetch, podemos comprobar si nuestra rama local está detrás de la versión existente en GitHub.

Por ejemplo:

git status

También podemos consultar las diferencias entre nuestra rama local y la rama remota:

git diff main origin/main

Este comando permite comparar:

main

con:

origin/main

y conocer qué diferencias existen entre ambas versiones.

3.4.1. ¿Qué significa origin en git fetch?

Cuando conectamos nuestro repositorio local con GitHub, normalmente Git utiliza el nombre:

origin

para identificar el repositorio remoto.

Por ejemplo:

git remote -v

podría mostrar algo parecido a:

origin  https://github.com/usuario/proyecto.git (fetch)
origin  https://github.com/usuario/proyecto.git (push)Lenguaje del código: JavaScript (javascript)

Por eso podemos ejecutar:

git fetch origin

Aquí:

  • origin identifica el repositorio remoto.
  • fetch indica que queremos obtener información actualizada de ese repositorio.

3.4.2. git fetch vs git fetch origin

Podemos utilizar simplemente:

git fetch

o especificar el repositorio remoto:

git fetch origin

En un proyecto habitual donde solamente tenemos un remoto llamado origin, ambos comandos suelen tener el mismo resultado práctico.

La segunda forma es más explícita porque estamos indicando exactamente qué remoto queremos consultar.

4. ¿Cómo consultar una rama específica?

También podemos indicar qué rama remota queremos consultar:

git fetch origin main

Esto le indica a Git que obtenga información relacionada con la rama main del remoto origin.

Por ejemplo:

Git local
   │
   │ git fetch origin main
   ▼
GitHub
   │
   └── main

Esto puede resultar especialmente útil cuando trabajamos con varias ramas.

4.1. ¿Qué es origin/main?

Después de utilizar git fetch, es habitual encontrarnos con algo como:

origin/main

Esto no es otra rama local normal.

Es una referencia que Git utiliza para representar el estado conocido de la rama main en el repositorio remoto origin.

Por ejemplo:

main
      ●──●──●

origin/main
      ●──●──●──●

Aquí nuestra rama main local tiene tres commits, mientras que origin/main indica que GitHub tiene dos commits adicionales que nuestra rama local todavía no tiene integrados.

Esto es precisamente una de las cosas que podemos descubrir utilizando git fetch.

5. ¿Cómo cambios hay después de git fetch?

Una vez ejecutado:

git fetch

podemos utilizar diferentes comandos para analizar los cambios.

5.1. Ver el estado del repositorio

git status

5.2. Ver commits que están en GitHub pero no en nuestra rama

git log main..origin/main

Este comando muestra los commits que existen en:

origin/main

pero todavía no existen en:

main

5.3. Ver las diferencias de código

git diff main origin/main

De esta manera podemos revisar exactamente qué contenido es diferente entre ambas versiones.

6. Casos reales de uso

git fetch es especialmente útil en proyectos donde varias personas trabajan sobre el mismo repositorio.

Caso 1: comprobar si alguien realizó cambios

Imaginemos que estamos trabajando en un proyecto con otra persona.

Antes de comenzar a modificar nuestros archivos podemos ejecutar:

git fetch

Después podemos comprobar si existen nuevos commits en GitHub.

Así evitamos trabajar con información desactualizada.

Caso 2: revisar cambios antes de hacer git pull

Supongamos que sabemos que otro desarrollador realizó varios cambios en GitHub.

En lugar de ejecutar directamente:

git pull

podemos hacer:

git fetch

y después revisar las diferencias:

git diff main origin/main

Si estamos de acuerdo con los cambios, posteriormente podemos integrarlos utilizando:

git pull

De esta forma tenemos mayor control sobre el proceso.

Caso 3: trabajar con varias ramas

Supongamos que el proyecto tiene:

main
develop
feature-login

Podemos actualizar la información de los repositorios remotos mediante:

git fetch

y posteriormente consultar el estado de las diferentes ramas remotas.

Esto resulta muy útil en proyectos donde existen varias funcionalidades desarrollándose al mismo tiempo.

Caso 4: antes de comenzar a trabajar

Una práctica habitual consiste en actualizar la información remota antes de comenzar una sesión de trabajo:

git fetch

Después podemos comprobar si nuestra rama está actualizada.

Esto nos permite comenzar el trabajo teniendo una visión más clara del estado actual del proyecto.

7. Ejemplo práctico de git fetch

Supongamos que tenemos un proyecto llamado:

mi-web

Nuestra versión local contiene:

index.html
style.css
script.jsLenguaje del código: CSS (css)

En nuestra computadora, la rama main está en este commit:

A ── B ── C
          ↑
        main

Mientras tanto, otra persona realizó cambios y los envió a GitHub:

A ── B ── C ── D ── E
          ↑         ↑
        main     origin/main

Nuestra computadora todavía no conoce los commits D y E.

Ejecutamos:

git fetch

Ahora Git conoce esos nuevos commits:

A ── B ── C ── D ── E
          ↑         ↑
        main     origin/main

Pero nuestros archivos locales siguen estando como antes.

Esto es importante.

git fetch nos permitió conocer la existencia de D y E, pero todavía no incorporó esos cambios a nuestra rama main.

Si posteriormente queremos incorporarlos, podemos utilizar:

git pull

o realizar una integración mediante otros comandos de Git, dependiendo del flujo de trabajo que estemos utilizando.

7.1. ¿git fetch modifica mis archivos?

No.

Esta es una de las características más importantes de git fetch.

Al ejecutarlo:

git fetch

Git descarga información del repositorio remoto, pero no sobrescribe automáticamente los archivos de nuestro proyecto.

Por eso podemos utilizarlo para inspeccionar primero y decidir después.

Esto lo convierte en una herramienta muy útil cuando queremos trabajar con mayor seguridad.

7.2. ¿git fetch actualiza mi rama main?

No directamente.

Por ejemplo, podemos tener:

main        → A ── B ── C
origin/main → A ── B ── C ── D

Después de ejecutar:

git fetch

Git actualizará la información que conoce sobre:

origin/main

pero nuestra rama:

main

seguirá apuntando a:

C

Para incorporar el commit D a nuestra rama local necesitaremos realizar posteriormente una integración.

Una forma habitual es:

git pull

7.3. ¿Qué ocurre si tengo cambios locales?

Aquí git fetch también resulta muy útil.

Supongamos que tenemos cambios sin confirmar en nuestro proyecto:

index.htmlmodificadoLenguaje del código: CSS (css)

Y queremos saber si otras personas realizaron cambios en GitHub.

Podemos ejecutar:

git fetch

Esto permite actualizar la información del repositorio remoto sin integrar automáticamente esos cambios en nuestros archivos.

De esta manera podemos analizar la situación antes de decidir cómo continuar.

7.4. Comandos relacionados con git fetch

Estos comandos suelen utilizarse junto con git fetch:

ComandoFunción
git fetchDescargar información del repositorio remoto
git remote -vVer los repositorios remotos configurados
git statusConsultar el estado de la rama
git logConsultar el historial de commits
git diffComparar diferencias
git pullDescargar e integrar cambios
git branch -rVer ramas remotas

8. Buenas prácticas

Algunas buenas prácticas son:

  1. Utilizar git fetch antes de integrar cambios importantes.
  2. Revisar las diferencias antes de ejecutar operaciones que modifiquen el proyecto.
  3. Utilizar git fetch para conocer el estado del repositorio remoto.
  4. Evitar utilizar git pull automáticamente si primero necesitamos revisar qué cambió.
  5. Aprender a interpretar referencias como origin/main.
  6. Utilizar git status, git log y git diff para analizar los cambios obtenidos.

9. Diferencia entre git fetch, git pull y git clone

Estos tres comandos están relacionados con GitHub, pero cumplen funciones diferentes.

Comando¿Para qué sirve?
git cloneCrear una copia local de un repositorio remoto
git fetchConsultar y descargar información nueva del remoto
git pullDescargar e integrar cambios del remoto

Una forma sencilla de recordarlos es:

git clone
↓
Traer el proyecto por primera vezLenguaje del código: PHP (php)
git fetch
↓
Consultar qué hay de nuevo
git pull
↓
Traer e integrar los cambios

10. Resumen de git fetch

git fetch permite consultar y descargar información actualizada desde un repositorio remoto como GitHub sin integrar automáticamente esos cambios en nuestra rama local.

Su principal ventaja es que nos permite revisar primero qué ocurrió en el repositorio remoto antes de modificar nuestro proyecto.

El flujo puede resumirse así:

GitHub
   │
   │ git fetch
   ▼
Información remota actualizada
   │
   ▼
Revisamos los cambios
   │
   ▼
Decidimos si integrarlos

Por eso, mientras que git pull combina la descarga y la integración de cambios, git fetch nos da un paso intermedio de control y revisión.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *