Por Anónimo (no verificado) , 29 Abril 2026

Sinopsis

git fetch [<options>] [<remote> [<refspec>...]]

Descripción

El comando git fetch descarga nuevos commits, archivos y refs desde un repositorio remoto a tu repo local, pero NO los mergea en tu branch de trabajo. Tras hacer fetch, las refs de seguimiento remoto (como origin/main) se actualizan, y puedes inspeccionar lo nuevo con git log origin/main antes de decidir mergear o rebasear.

Hacer fetch es seguro: nunca modifica tu árbol de trabajo o branch actual. Muchos usuarios prefieren git fetch seguido de un git merge o git rebase explícito sobre git pull, porque da un paso de previsualización claro. Usa --all para hacer fetch desde cada remoto configurado.

En el uso diario, git fetch se integra con alias de shell. Para depurar, ejecuta con GIT_TRACE=1.

Entender cómo git fetch interactúa con el modelo de datos de Git rinde dividendos.

Opciones comunes

OpciónDescripción
--allHace fetch desde todos los remotos configurados.
--prune / -pElimina refs de seguimiento remoto que ya no existen upstream.
--tagsDescarga todos los tags del remoto.
--depth=<n>Limita la profundidad del historial descargado (crea/mantiene un clon shallow).
--unshallowConvierte un clon shallow en uno completo.
--dry-runMuestra lo que se descargaría.
--force / -fPermite actualizaciones no fast-forward de refs.

Ejemplos

git fetch
# Actualiza refs de seguimiento remoto desde origin

git fetch --all --prune
# Actualiza desde cada remoto y limpia branches obsoletos

git fetch upstream main
# Descarga solo el branch main desde upstream

git fetch --unshallow
# Rellena el historial completo en un clon shallow

Errores comunes

Confundir git fetch con git pull es común: fetch solo descarga, mientras que pull descarga y mergea. Olvidar --prune deja una larga lista de branches de seguimiento obsoletos con el tiempo. Configura fetch.prune = true globalmente para hacer pruning automático.

Comandos relacionados

git pull, git merge, git remote, git ls-remote