Sobes.tech
Junior

Qual é a diferença entre os comandos pull e fetch no Git?

sobes.tech IA

Resposta da IA

git fetch descarrega as alterações de um repositório remoto, mas não as aplica à branch atual. git pull realiza um git fetch, e depois faz uma fusão automática (merge) das alterações recebidas com a branch atual.

Diferenças principais:

Comando Ação Impacto na cópia de trabalho / branch
git fetch Carrega objetos (commits, ficheiros) Não altera a cópia de trabalho nem a branch atual
git pull Carrega objetos e funde alterações Atualiza a branch atual e a cópia de trabalho

Exemplo de uso:

Para simplesmente ver o que mudou no servidor remoto:

git fetch origin

(Pode verificar as alterações com git log origin/<branch>)

Para obter as alterações e aplicá-las automaticamente à branch atual:

git pull origin main # por exemplo

git pull é essencialmente equivalente a executar sequencialmente git fetch e git merge ou git rebase (dependendo da configuração).

# Equivale a git pull
git fetch origin
git merge origin/main # se a branch atual for main e usar merge como estratégia de fusão

O uso de git fetch oferece maior controlo, pois permite rever as alterações entrantes antes de as fundir. git pull é conveniente para sincronização rápida.