Git | Fetch e Pull

Lilian Lima
Devs JavaGirl
Published in
3 min readJul 2, 2019

Essa é a sexta publicação de uma série onde compartilho como as coisas acontecem nos bastidores do Git, além de comandos, conceitos.

Se você trabalha com o Git certamente já precisou executar git pull e/ou git fetch, mas você conhece a diferença entre eles ou o que acontece no bastidores do seu ambiente local?

Na publicação sobre worflow local vimos que o Git se organiza em dois ambientes: local (ou de desenvolvimento) e remoto:

E se você trabalha num time pode multiplicar esse ambiente local pelo número de colegas de trabalho que dividem com você a missão de salvar o mundo:

Cada integrante do time vai trabalhar localmente em sua Staging Area, posteriormente executará o git commit para seu repositório local e então empurrará (git push) as mudanças para o repositório remoto.

Suponha que eu precise buscar no repositório remoto todas as mudanças empurradas pelo Joaquim na branch master e a nova branch outra-feature que a Maria criou, para obtê-las eu executo git fetch, e todos os commits e branches empurrados serão atualizados no repositório local:

Contudo ao executar git status o Git informa que nossa branch local está desatualizada:

Conforme sugerido pelo Git execute git pull para concluir essa integração, se você não possui mudanças no seu ambiente local ela irá ocorrer sem dores de cabeça, mas de que integração estamos falando? A integração das mudanças disponíveis em origin/minha-feature na branch local minha-feature, ambas gerenciadas no repositório local.

A essas alturas você deve estar pensando que o comando git pull também busca implicitamente as mudanças no repositório remoto. Sim, você está certo, contudo em alguns casos é uma boa idéia executar o git fetch explicitamente. Por exemplo: quando você desejar sincronizar novas branches ou quando você quiser assegurar que seu repositório local está atualizado antes de fazer um git merge ou git rebase. Acredite, caso esteja desatualizado você perderá commits nesse movimento, já aconteceu comigo. 😦

Até então seguimos pelo fluxo básico de integração do ambiente local com o remoto, mas e se nesse processo de integração ocorrerem conflitos entre as suas mudanças locais e as remotas? Para que esse conteúdo não se torne enfadonho tratarei sobre isso na próxima publicação.

Originally published at http://deviniciative.wordpress.com on July 2, 2019.

--

--

Lilian Lima
Devs JavaGirl

{“ocupação”: “software engineer”, “idioma computacional”: “java”, “um hobby”:” escrever”,” um valor”:” justiça social”, “um amor”: “minha família 💙”}