Git Fetch: uma classe mestre

Publicados: 2023-02-26
Laptop Linux mostrando uma janela de terminal com um padrão de globo ao fundo e uma marca d'água binária
fatmawati achmad zaenuri/Shutterstock.com
O comando git fetch é como um comando git pull que atualiza seu repositório local com informações e confirma do repositório remoto, sem sobrescrever seus arquivos de trabalho.

O comando Git fetch permite que você olhe antes de pular. Você pode descobrir quais alterações foram feitas em um repositório remoto, mas sem substituir seus arquivos locais pelos arquivos remotos.

Índice

O que é git fetch e o que ele faz?
Git buscar vs. puxar
Sincronize seus repositórios locais e remotos com git fetch
Veja todas as tags buscadas
Fazendo uma simulação primeiro
Como obter um único ramo
Obter todas as filiais
Comparando Ramos Locais e Remotos
Sincronizando uma filial local com uma filial remota
O cachorrinho meio treinado

O que é git fetch e o que ele faz?

O comando fetch no Git baixa commits, arquivos e outras informações de um repositório remoto para seu repositório local, com segurança. Use a busca quando quiser ver quais alterações outros desenvolvedores fizeram, sem ser forçado a aceitar as alterações. Seus arquivos locais permanecem intocados. Por que isso é importante?

Você tem que manter seu juízo sobre você quando está trabalhando como parte de uma equipe de desenvolvimento. O repositório remoto ou central conterá alterações e novas ramificações que outros desenvolvedores criaram e enviaram para o repositório remoto.

É totalmente possível que alguém tenha atualizado a cópia remota dos arquivos que você modificou localmente em seu computador. Se você executar casualmente um git pull para atualizar seu repositório local, provavelmente terá que lidar com mesclagens para alterações que talvez nem queira.

Depois de baixar as informações, você pode examiná-las e ver quais são as mudanças. Isso permite que você faça uma escolha informada sobre o que deseja mesclar agora, se houver, e o que deseja adiar para mais tarde.

Git buscar vs. puxar

O comando git fetch se comporta como o comando git pull , mas sem a etapa que sobrescreve seus arquivos locais. Seu repositório local é atualizado e sincronizado, mas as alterações não são gravadas no estado de trabalho de seu repositório local, portanto, seus arquivos permanecem intocados.

Ou, colocando de outra forma, o comando git pull é como um git fetch seguido imediatamente por um git merge .

Sincronize seus repositórios locais e remotos com git fetch

Para buscar todos os metadados atualizados e confirmações de um repositório remoto para seu repositório local, use o comando git fetch com o nome ou URL do repositório remoto. Por padrão, o primeiro repositório remoto é chamado de “origem”.

 git busca origem

Você pode omitir a palavra “origem” se estiver trabalhando com um único repositório remoto.

 git busca 

Usando o comando git fetch no repositório remoto padrão

Isso recupera todas as atualizações do repositório de “origem”, mas não mescla as alterações nos arquivos de trabalho. Podemos ver que há um novo branch, chamado “new-branch”, que foi recuperado para nós.

Depois de usar o comando fetch , você pode ver a lista completa de branches no controle remoto, usando a opção -r (remote) com o comando branch.

 git ramo -r 

Olhando para as ramificações que existem no controle remoto padrão

Isso lista todas as ramificações que o remoto conhece, que após o fetch , também estão em seu repositório local.

Veja todas as tags buscadas

Da mesma forma, você pode usar a opção tag (observe, é “tag” sem um “s”) para ver a lista de tags.

 git tag 

Usando o comando git tag para listar as tags no repositório local

RELACIONADO: Como alternar, adicionar e remover Git Remotes

Fazendo uma simulação primeiro

Embora um git fetch não mescle as alterações em seus arquivos de trabalho, ele ainda atualiza seu repositório local. Se você quiser ver qual mudança o comando fetch fará, sem realmente fazê-lo, use a opção --dry-run .

 git fetch --dry-run 

Usando a opção --dry-run para ver as alterações que o comando fetch recuperaria

Como obter um único ramo

Buscar informações sobre uma única ramificação é fácil. Adicione o nome da ramificação à linha de comando para informar fetch que você só precisa saber sobre aquela ramificação.

Aqui, estamos dizendo fetch para recuperar o branch “mary-feature” do repositório remoto “origin”.

 git busca origem mary-feature 

Usando git fetch para recuperar uma única ramificação remota

Agora que os detalhes e o conteúdo do branch remoto estão em seu repositório local, você pode usar o comando git checkout para criar um novo branch e fazer o checkout do branch remoto. Isso não sobrescreverá nenhum arquivo existente se for a primeira vez que você usa essa ramificação.

 git checkout -b mary-feature origem/mary-feature 

Verificando com segurança uma ramificação remota recuperada para uma nova ramificação local

Obter todas as filiais

Se estiver usando vários controles remotos, você pode economizar tempo puxando todas as alterações de todas as ramificações de volta para seu repositório local usando a opção --all .

 git buscar --all

Comparando Ramos Locais e Remotos

Para ver como os arquivos em uma ramificação remota diferem de suas cópias locais, use git fetch e, em seguida, use o comando git log .

Observe que as ramificações local e remota têm dois pontos “ .. ” separando-as. A opção --oneline mostra o identificador do commit e a mensagem do commit.

 git busca
 git log --oneline mary-feature..origin/mary-feature 

Usando git para buscar as alterações remotas e git log para mostrar as alterações

A exibição de uma linha é útil se uma ramificação contém muitas alterações. Para ver um pouco mais de informação, omita a opção --oneline .

 git log mary-feature..origin/mary-feature 

Omitir a opção --oneline para que o git mostre mais detalhes para cada confirmação

Isso nos mostra a hora e a data de cada commit, junto com a mensagem do commit e os detalhes de contato do autor da alteração.

Sincronizando uma filial local com uma filial remota

Se você decidiu que quer ir em frente e mesclar as alterações da ramificação remota para seus arquivos de trabalho locais, você pode usar estes comandos.

Faremos o check-out do branch para ter certeza de que estamos funcionando, é o nosso branch atual e em funcionamento.

 git checkout mary-feature 

Verificando uma filial

A ramificação é verificada para nós e somos informados de que ela está por trás da versão remota. Podemos usar git pull para atualizá-lo e git status para verificar nosso status.

 git pull
 git status 

Puxando alterações do repositório rmeote para o local

Se fizermos algumas alterações em nossos arquivos locais, o Git nos informará quando fizermos o checkout da ramificação que precisaremos executar um git pull para iniciar uma mesclagem.

 git checkout mary-feature 

Git nos informando que os brnahces locais e remotos divergiram e precisam ser mesclados

Um simples git pull inicia o processo de recuperação dos arquivos e mesclagem, ou podemos mergulhar direto e usar o próprio git merge . Começaremos verificando se estamos trabalhando com a ramificação correta

 git checkout mary-feature 

Git nos informando que os brnahces locais e remotos divergiram e precisam ser mesclados

Diremos ao git para mesclar nosso branch atual com o branch no repositório remoto, existem seis commits diferentes que precisam ser resolvidos.

Uma mensagem de mesclagem bem-sucedida

Precisamos dizer ao Git qual branch remoto queremos mesclar.

 git merge origin/mary-feature 

usando git merge para mesclar as alterações remotas em uma ramificação local

Um editor é aberto para nos permitir fornecer uma mensagem de confirmação. Podemos aceitar a mensagem sugerida ou adicionar a nossa. O editor é seu editor padrão, a menos que o Git tenha sido configurado para usar um editor diferente.

Editando a mensagem de confirmação

Salve suas alterações quando estiver pronto para prosseguir. A mesclagem continua automaticamente quando o editor é fechado.

Nossa fusão foi bem-sucedida porque não houve conflitos.

Uma mensagem de mesclagem bem-sucedida

Os conflitos surgem quando as mesmas linhas de código são alteradas por dois ou mais desenvolvedores. Se for esse o caso, o Git marca os conflitos no arquivo afetado. Você precisará revisá-los e escolher qual alteração manter.

O cachorrinho meio treinado

Assim como um cachorrinho em treinamento, fetch recuperará o que você pedir, mas não o deixará cair. Se você realmente deseja o que o cachorro lhe mostrou, precisará pull .

RELACIONADOS: Git rebase: tudo o que você precisa saber