← Git

Trabajo remoto

¿Cuál es la diferencia entre `git fetch`, `git pull` y `git push`?

Ver respuesta — intenta responderla en voz alta primero

git push sube tus commits locales al remoto. git fetch baja los cambios del remoto pero no los integra a tu rama; solo actualiza tu conocimiento del remoto. git pull baja e integra en un solo paso: es un fetch seguido de un merge (o rebase).

Estos tres comandos mueven commits entre tu repo local y el remoto.

  • git push: envía tus commits locales al remoto para que los demás los vean.
  • git fetch: descarga los commits nuevos del remoto y actualiza las ramas remotas (origin/main), pero no toca tu rama local. Tu trabajo queda intacto; solo te enteras de qué hay nuevo. Es la opción segura para "mirar antes de integrar".
  • git pull: hace git fetch y además integra esos cambios en tu rama actual (por defecto con merge). Es cómodo pero puede provocar conflictos o merges inesperados.

La diferencia clave entre fetch y pull: fetch solo mira, pull mira y aplica.

# Subir tus commits locales al remoto
git push
# o especificando rama: git push origin main

# Bajar los cambios del remoto SIN integrarlos (seguro)
git fetch origin
# Ahora origin/main está actualizado, pero tu rama local no cambió
git log origin/main --oneline   # puedes revisar qué llegó

# Integrar manualmente después del fetch
git merge origin/main

# Bajar E integrar en un solo paso
git pull
# equivale a: git fetch + git merge

# Bajar e integrar usando rebase en vez de merge
git pull --rebase

Usar git pull a ciegas cuando tienes cambios locales sin commitear o cuando la rama divergió, y llevarte un conflicto o un merge sorpresa. Muchos equipos prefieren git fetch + revisar + integrar, o git pull --rebase para mantener el historial lineal. Otro error: confundir fetch con pull creyendo que fetch ya actualizó tu rama de trabajo (no lo hace).

"git push sube mis commits al remoto. git fetch baja los cambios del remoto pero no los integra: solo actualiza las ramas remotas como origin/main, así que puedo revisar antes de aplicar nada. git pull es un fetch más un merge en un solo paso: baja e integra directamente en mi rama. La diferencia clave es que fetch solo mira y pull mira y aplica. A veces prefiero fetch y luego integrar a mano, o pull --rebase para mantener el historial lineal."

Reto rápido

Quieres ver qué cambios subieron tus compañeros al remoto, pero sin tocar tu trabajo local todavía. ¿fetch o pull?

Ver respuesta

git fetch. Descarga los commits nuevos y actualiza las ramas remotas (como origin/main) sin modificar tu rama local, así que puedes revisar con calma (por ejemplo con git log origin/main) antes de decidir integrarlos con merge o rebase. git pull los aplicaría de inmediato a tu rama, que es justo lo que quieres evitar en este caso.