Obter (Fetch) do Remote com git fetch
Nesta etapa, aprenderemos como buscar (fetch) as alterações de um repositório remoto. Imagine que você está trabalhando em um projeto com outras pessoas e elas fizeram algumas atualizações. Você precisa obter essas atualizações para sua máquina local. O comando git fetch é como você faz isso. Ele baixa as últimas alterações de um repositório remoto, mas não as mescla em seu branch atual.
Primeiro, vamos simular ter um repositório remoto. Criaremos um repositório bare e, em seguida, o adicionaremos como um remoto ao nosso repositório my-time-machine existente.
cd ~/project
mkdir remote-repo.git
cd remote-repo.git
git init --bare
Isso cria um repositório Git bare, que é tipicamente usado como um repositório central de onde os desenvolvedores fazem push e pull.
Agora, vamos voltar para o nosso repositório my-time-machine e adicionar este repositório bare como um remoto.
cd ~/project/my-time-machine
git remote add origin ~/project/remote-repo.git
Nomeamos nosso remoto origin, que é uma convenção comum. Agora, vamos verificar se o remoto foi adicionado corretamente.
git remote -v
Você deve ver uma saída semelhante a esta, mostrando as URLs de fetch e push para o remoto origin:
origin /home/labex/project/remote-repo.git (fetch)
origin /home/labex/project/remote-repo.git (push)
Agora, vamos simular uma alteração no repositório remoto. Como é um repositório bare, não podemos fazer commits diretamente nele. Em vez disso, simularemos uma alteração criando um novo arquivo no diretório do repositório bare.
cd ~/project/remote-repo.git
echo "This is a remote change" > remote_file.txt
Agora, volte para o seu repositório my-time-machine.
cd ~/project/my-time-machine
Neste ponto, seu repositório local não sabe sobre o remote_file.txt que foi adicionado ao remoto simulado. É aqui que o git fetch entra em ação.
Execute o comando git fetch:
git fetch origin
Você pode não ver muita saída, ou pode ver algo indicando que novos objetos foram recebidos.
O que git fetch origin fez foi conectar-se ao remoto origin e baixar quaisquer novos commits e objetos que não estão em seu repositório local. No entanto, ele não mesclou essas alterações em seu branch atual (master). As alterações agora estão disponíveis em seu repositório local, mas são armazenadas em um branch especial que rastreia o remoto, tipicamente chamado origin/master.
Esta é uma diferença fundamental entre git fetch e git pull. git pull é essencialmente git fetch seguido por um merge. Ao usar git fetch primeiro, você pode ver quais alterações estão disponíveis no remoto antes de decidir integrá-las ao seu trabalho. Isso lhe dá mais controle e ajuda a evitar conflitos inesperados.
Na próxima etapa, veremos como comparar seu branch local com o branch remoto buscado para entender quais alterações foram baixadas.