git pull
Nesta página, encontre informações sobre o comando git pull, suas opções mais comuns e dicas importantes sobre seu uso.
O que o git pull faz
git pull baixa novos commits de um repositório remoto e os integra imediatamente ao seu branch local atual. É o comando que você executa para atualizar o seu trabalho com o que seus colegas de equipe enviaram.
Por baixo dos panos, git pull é um atalho conveniente para dois comandos executados em sequência:
git fetch <remote> # download the new commits
git merge <remote>/<branch> # integrate them into the current branchPortanto, git pull equivale a git fetch seguido de git merge. Entender essa divisão é a chave para compreender o comando inteiro: o fetch atualiza seus branches de rastreamento remoto sem tocar no seu trabalho, e o merge (ou rebase, veja abaixo) reaplicar o novo histórico ao seu branch.

Quando usar
git pull faz parte do fluxo de trabalho de "sincronização" do Git, ao lado de git push, git fetch e git remote. Use-o sempre que quiser que seu branch local reflita o estado remoto mais recente, por exemplo:
- Antes de começar um novo trabalho, para construir sobre o código mais atual.
- Antes de executar git push, para que seu push avance rapidamente em vez de ser rejeitado como "non-fast-forward".
- Para capturar os commits de um colega de equipe em um branch compartilhado.
git fetch e git pull ambos baixam conteúdo remoto, mas diferem de uma forma importante: git fetch apenas atualiza seus branches de rastreamento remoto e deixa sua cópia de trabalho intocada, enquanto git pull também mescla essas mudanças no seu branch atual. Se você quiser inspecionar os commits recebidos antes de integrá-los, faça o fetch primeiro e execute o merge manualmente.
Como a mesclagem funciona durante um pull
Suponha que seu branch local e o remoto compartilhem o histórico até o commit E, depois divirjam. O remoto ganhou commits A, B e C que você não tem. Executar git pull busca esses commits.

O Git então cria um novo commit de mesclagem, H, que une o seu trabalho local com os commits buscados A, B e C, combinando as duas linhas de histórico.

Se o seu branch local não divergiu (você não tem novos commits locais), o Git simplesmente move o ponteiro do seu branch para frente até os novos commits. Isso é chamado de fast-forward e não produz nenhum commit de mesclagem.
Com a opção --rebase, o Git reaplicar seus commits locais sobre os commits buscados em vez de criar um commit de mesclagem, mantendo o histórico linear.

Opções comuns
| Comando | Descrição |
|---|---|
git pull <remote> | Busca o conteúdo remoto e o mescla diretamente na cópia local (equivalente a git fetch <remote> seguido de git merge <remote>/<current-branch>). |
git pull --no-commit <remote> | Busca e mescla, mas para antes de criar o commit de mesclagem para que você possa inspecionar o resultado primeiro. |
git pull --rebase <remote> | Reaplicar seus commits locais sobre os commits buscados em vez de mesclá-los, mantendo o histórico linear. |
git pull --ff-only | Atualiza apenas se a mesclagem puder ser um fast-forward; caso contrário, aborta sem tocar no seu branch. |
git pull --verbose | Fornece saída detalhada, mostrando o conteúdo baixado e os detalhes da mesclagem durante o pull. |
Exemplos
Pull do branch upstream
Invocar git pull sem argumentos busca e mescla as mudanças do branch upstream configurado para o branch atual:
git pullPara que isso funcione, o branch atual deve ter um upstream definido (o Git o armazena após o primeiro git push -u ou git branch --set-upstream-to).
Pull de um remote e branch específicos
Você pode nomear o remote e o branch explicitamente:
git pull <remote> <branch>Isso busca e mescla as mudanças do branch especificado do remote indicado. Por exemplo, para fazer pull do branch develop do remote origin:
git pull origin developPull com rebase
git pull --rebaseEm vez de mesclar, este comando reaplicar seus commits locais sobre os commits buscados. O resultado é um histórico linear sem commit de mesclagem, o que muitas equipes preferem para branches de funcionalidade. Para tornar isso o padrão para um branch, configure git config pull.rebase true. Consulte git rebase para conhecer as vantagens e desvantagens.
Pull sem commitar a mesclagem
git pull --no-commitIsso busca e mescla, mas para logo antes de criar o commit de mesclagem, deixando o resultado no stage para que você possa revisar (e alterar) antes de fazer o commit com git commit.
Resolvendo conflitos após um pull
Se os commits remotos alteraram as mesmas linhas que você alterou localmente, a mesclagem não pode ser concluída automaticamente e o Git reporta um conflito:
Auto-merging app.js
CONFLICT (content): Merge conflict in app.js
Automatic merge failed; fix conflicts and then commit the result.Para resolver, abra cada arquivo com conflito, edite-o para manter o conteúdo correto (removendo os marcadores <<<<<<<, ======= e >>>>>>>), depois adicione ao stage e faça o commit:
git add app.js
git commitSe preferir não lidar com o conflito agora, git merge --abort retorna seu branch ao estado anterior ao pull.
Fazer pull em um branch com mudanças locais não commitadas pode falhar porque o Git se recusa a sobrescrever seu trabalho. Faça o commit ou use git stash nas suas mudanças antes de fazer o pull e, em seguida, desfaça o stash depois.