W3docs

Introdução

Descrição dos comandos git remote, git fetch, git push e git pull, com seus usos comuns e básicos.

Git é um sistema de controle de versão distribuído: cada clone é um repositório completo com seu próprio histórico completo, não apenas uma cópia de trabalho obtida a partir de um servidor central. Por isso, a colaboração no Git é essencialmente sobre sincronização, compartilhando branches inteiros entre repositórios em vez de trocar um único conjunto de mudanças.

Esta página apresenta os quatro comandos que movem commits entre o seu repositório local e os remotos: git remote, git fetch, git push e git pull. Cada comando é abordado em detalhes na sua própria página, mas entender como eles se encaixam é o que torna a colaboração do dia a dia previsível.

git remote

O modelo mental: local vs. remoto

Antes de ver os comandos individualmente, é útil ter uma imagem simples em mente. Três elementos estão envolvidos na sincronização:

  • Seu repositório local — os branches nos quais você faz commits, como main.
  • Um remoto — um marcador com nome (como origin) apontando para a URL de outro repositório.
  • Branches de rastreamento remoto — cópias locais somente leitura dos branches do remoto, nomeadas como origin/main. Registram onde o remoto estava na última vez que você se comunicou com ele.

A direção do fluxo de dados indica qual comando usar:

  • git fetch e git pull trazem commits de volta do remoto.
  • git push envia commits para o remoto.
  • git remote gerencia as próprias conexões.

git remote

O comando git remote foi criado para criar, visualizar e remover conexões com outros repositórios. Por padrão, ele lista todas as conexões remotas que foram armazenadas anteriormente.

Quando você clona um repositório, o Git cria automaticamente um remoto chamado origin apontando de volta para a URL de origem, por isso raramente é necessário adicionar um manualmente nos seus próprios projetos. Você adiciona remotos extras quando colabora em forks, por exemplo, apontando upstream para o projeto original do qual você fez o fork.

# List configured remotes
git remote
# origin

# Show their fetch/push URLs
git remote -v
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

# Add a second remote
git remote add upstream https://github.com/original/repo.git

git fetch

O comando git fetch baixa commits, arquivos e referências de um repositório remoto para o seu repositório local, atualizando os seus branches de rastreamento remoto (como origin/main). Ele permite que você veja no que outros membros da equipe estão trabalhando sem tocar no seu próprio branch de trabalho.

Tanto git fetch quanto git pull baixam conteúdo do remoto, mas git fetch é a opção segura e não destrutiva: apenas avança os branches de rastreamento remoto e nunca altera seus arquivos de trabalho. Nada é mesclado até que você solicite explicitamente.

# Download new commits from origin (does not change your working branch)
git fetch origin

# Review what arrived before integrating it
git log main..origin/main

# Integrate it yourself when ready
git merge origin/main

Esse padrão de "buscar, revisar e então mesclar" é o motivo pelo qual muitas equipes preferem git fetch em vez de git pull: você pode inspecionar as alterações recebidas antes que elas cheguem ao branch que está editando.

git push

O comando git push envia o conteúdo do seu repositório local para um repositório remoto. Enquanto git fetch importa commits para os seus branches de rastreamento remoto locais, git push exporta seus commits locais para os branches correspondentes no remoto, para que o restante da equipe possa vê-los.

# Push the current branch's commits to origin
git push origin main

# First push of a new branch: set up tracking with -u
git push -u origin feature-login

O push só é bem-sucedido quando é possível avançar o branch remoto sem perder commits (um fast-forward). Se outra pessoa tiver feito push enquanto isso, o Git rejeita o push e solicita que você integre o trabalho dela primeiro, geralmente executando git pull ou git fetch e mesclando. Evite --force em branches compartilhados: isso pode sobrescrever commits de colegas de equipe.

git pull

O comando git pull é essencialmente git fetch seguido de uma etapa de integração, tudo em um único comando. Ele baixa novo conteúdo do remoto e o integra imediatamente ao seu branch atual.

Por padrão, git pull combina git fetch com git merge, criando um commit de merge quando os históricos divergiram. Você pode configurá-lo para usar git rebase em vez disso (git pull --rebase), o que reproduz seus commits locais sobre os buscados para um histórico linear.

# Fetch from origin and merge into the current branch
git pull origin main

# Fetch and rebase your local commits on top instead
git pull --rebase origin main

Quando usar cada um

Um guia rápido de decisão para o trabalho do dia a dia:

  • Está começando o trabalho do dia? Execute git pull (ou git fetch + revisar + mesclar) para obter as alterações mais recentes.
  • Quer ver o que mudou sem perturbar seu trabalho? Use git fetch, depois git log ou git diff contra origin/<branch>.
  • Terminou uma parte do trabalho? Execute git push para compartilhá-lo.
  • O push foi rejeitado? O remoto tem commits que você não tem. Faça pull (ou fetch e merge/rebase), resolva os conflitos e faça push novamente.

A partir daqui, siga as páginas dedicadas a cada comando e consulte o capítulo Git workflows para ver como as equipes combinam esses comandos em um processo repetível.

Prática

Prática
Quais são as afirmações corretas sobre os comandos de sincronização no Git, conforme descrito no Tutorial Git do W3Docs?
Quais são as afirmações corretas sobre os comandos de sincronização no Git, conforme descrito no Tutorial Git do W3Docs?
Was this page helpful?