Artículo original: Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?
Traducido y adaptado por: Sil Zubikarai

Git pull y fetch son dos comandos que regularmente son usados por los usuarios de Git. Veamos la diferencia entre estos dos comandos.

Por el bien del contexto, vale la pena recordar que probablemente trabajemos en un repositorio clon. ¿Qué es un clon? Es simplemente un duplicado de otro repositorio. Es básicamente el tener tu propia copia del código fuente de otra persona.

Con eso, dicho, para mantener tu clon actualizado con cualquier cambio que se haya aplicado al original, necesitaras traerlos a tu clon.

Ahí es donde fetch y pull  entran.

git fetch es el comando que dice a su local git que recupere la información de metadatos más reciente del original(pero no realiza ninguna transferencia de archivo. Es más como simplemente verificar si hay algún cambio disponible).

git pull por otro lado, hace eso Y trae (una copia) de esos cambios de un repositorio remoto.

Por ejemplo:

git pull origin ankur bugfix

La conclusión es tener en cuenta que generalmente hay al menos tres copias de un proyecto en su estación de trabajo.

  • Una copia de tu propio repositorio con su propio historia de commit (el ya guardado, por así decirlo).
  • La segunda copia es su copia de trabajo donde está editando y construyendo(aún no comprometido con su repositorio).
  • La tercera copia es tu copia local "cached" de un repositorio remoto(probablemente el original de donde has clonado el tuyo)

Puedes usar git fetch para conocer los cambios realizados en un repo/rama remota desde tú última pull. Esto es útil para permitir la comprobación antes de hacer el actual pull, lo que podría cambiar los archivos de tu actual rama y la copia de trabajo(y potencialmente perder sus cambios, etc.).

git fetch    
git diff ...origin