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.