Artigo original: Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?

Os comandos git pull e git fetch são usados regularmente por usuários do git. Vamos ver a diferença entre os dois comandos.

Para fins de contextualização, é importante lembrar que provavelmente estaremos trabalhando em um repositório clonado. O que é um clone? É simplesmente uma duplicata de outro repositório. É, basicamente, como obter sua própria cópia do código fonte de outra pessoa.

Dito isso, para manter seu clone atualizado com as mudanças que podem ter sido aplicadas ao repositório original, você precisa "puxar" essas mudanças para o seu clone.

É aí que entram os comandos fetch e pull.

git fetch é o comando que informa seu git local que ele deve obter as informações de metadados mais recentes do repositório original (embora ainda não faça a transferência dos dados – é como verificar para ver se há mudanças disponíveis).

git pull, por outro lado, faz isso E traz (copia) essas mudanças do repositório remoto.

Por exemplo:

git pull origin ankur bugfix

O que importa lembrar aqui é ter em mente que existem, em geral, ao menos três cópias de um projeto em sua estação de trabalho.

  • Uma das cópias é seu próprio repositório, com seu próprio histórico de commits (aquele que já está salvo, por assim dizer).
  • A segunda cópia é a sua cópia de trabalho, onde você está editando e criando (aquela da qual você ainda não fez o commit no repositório).
  • A terceira cópia é sua cópia local “em cache” de um repositório remoto (provavelmente, o original de onde você clonou o seu).

Você pode usar o comando git fetch para saber as alterações feitas no repositório ou na branch remota desde seu último uso do comando git pull. Isso é útil para permitir a verificação antes de fazer um pull de fato, que poderia alterar arquivos em sua branch e em sua cópia de trabalho atuais (e, potencialmente, fazer com que você perca suas alterações etc.).

git fetch    
git diff ...origin