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.

Índice
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 fetch | Sí | Sí | No | No |
git pull | Sí | Sí | Puede hacerlo | Sí |
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í:
originidentifica el repositorio remoto.fetchindica 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.html → modificadoLenguaje 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:
| Comando | Función |
|---|---|
git fetch | Descargar información del repositorio remoto |
git remote -v | Ver los repositorios remotos configurados |
git status | Consultar el estado de la rama |
git log | Consultar el historial de commits |
git diff | Comparar diferencias |
git pull | Descargar e integrar cambios |
git branch -r | Ver ramas remotas |
8. Buenas prácticas
Algunas buenas prácticas son:
- Utilizar
git fetchantes de integrar cambios importantes. - Revisar las diferencias antes de ejecutar operaciones que modifiquen el proyecto.
- Utilizar
git fetchpara conocer el estado del repositorio remoto. - Evitar utilizar
git pullautomáticamente si primero necesitamos revisar qué cambió. - Aprender a interpretar referencias como
origin/main. - Utilizar
git status,git logygit diffpara 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 clone | Crear una copia local de un repositorio remoto |
git fetch | Consultar y descargar información nueva del remoto |
git pull | Descargar 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.
