Para Que Serve o git fetch - fetch vs pull

Talvez você, assim como eu, aprendeu a usar git pull direto e nem se preocupou com a função do fetch até descobrir este comando.

Para que serve então git fetch? O comando git fetch pode ser usado para baixar todos os commits do repositório remoto sem afetar o seu código local.

Basicamente, git pull faz primeiro um git fetch seguido de um git merge origin/master.

A função do git fech é bastante simples na prática, mas se você procura algo mais detalhado, este é o artigo certo!

git fetch

Primeiramente, precisamos entender que no Git existem duas versões do repositório local. Uma versão contém o seu código, com suas alterações, e a outra versão espelha o repositório remoto, para que seja usada como contraste à sua versão local do código no caso de fazer merge ou diff, por exemplo.

Para entender isto, você pode fazer o seguinte teste:

  1. Tenha um repositório próprio em dois diretórios diferentes.
  2. Faça uma alteração e um commit em um dos diretórios e em seguida dê git push.
  3. No outro repositório faça um fetch seguido de um diff:
    git fetch
    git diff origin/master
    

Você vai ver as diferenças entre o seu código local e o código remoto (que na verdade agora está em sua máquina graças ao fetch), com a alteração que acabou de ser feita, sem que o código local seja alterado.

Esta é uma forma segura de atualizar o espelho do repositório remoto em seu repositório local sem fazer merge.

Para ter a versão remota em sua "área de trabalho", você ainda precisará fazer "merge" deste commit. E isso é feito automaticamente no caso do git pull:

git pull

O comando git pull existe por ser uma forma mais semântica e simples de "puxar" o código, mas na realidade ele simplesmente acaba executando fetch e em seguida merge. Ex:

git fetch
git merge origin/master

No código acima temos a referência de "origin/master" que nada mais é do que a uma referência à cópia da branch "master" obtida através de git fetch em "origin", que é um atalho ao repositório remoto.



Este artigo foi útil pra você?

Ricardo Metring

Ricardo Metring

Sou desenvolvedor full stack e co-fundador da Criar.io.
Trabalho há 10 anos com programação e sempre interessado em aprender mais.

Linkedin     Github

Artigos relacionados