Programa
Quando precisamos trabalhar em uma ramificação em um repositório remoto, como o trabalho de um colega ou uma nova ramificação de recurso, enfrentamos o desafio de acessar e atualizar essa ramificação localmente.
Felizmente, Git simplifica esse processo, oferecendo comandos diretos para que você crie uma cópia local do ramo remoto. Isso nos permite mudar para a ramificação desejada, contribuir e colaborar efetivamente com a equipe.
Para obter uma resposta rápida, para fazer checkout de uma ramificação chamada , executamos:
git fetch origin <branch_name>
git checkout -b <branch_name> origin/<branch_name>
Neste artigo, exploraremos esses comandos e saberemos como eles funcionam com mais detalhes.
O processo em duas etapas: git fetch
e git checkout
Para começar a trabalhar em uma ramificação remota localmente, precisamos primeiro nos certificar de que nosso repositório local esteja atualizado com o repositório remoto. Em seguida, podemos criar uma cópia local e começar a trabalhar nessa ramificação.
Atualizando o repositório local
Para atualizar o repositório local, usamos o comandogit fetch
. Sua forma mais simples não usa argumentos:
git fetch
Quando usado sem argumentos, o comando git fetch recupera todas as ramificações do repositório remoto padrão. Embora isso inclua a ramificação que desejamos, também ocupará mais espaço em disco local.
Se o espaço em disco for uma preocupação, podemos especificar o ramo que queremos buscar passando-o como parâmetro para o comando:
git fetch origin <branch_name>
Substitua pelo nome da filial desejada. O parâmetro
origin
especifica o nome do repositório remoto. Por padrão, quando clonamos um repositório, o remoto é chamado de origem.
É importante observar que a atualização das referências remotas com fetch não afetará nenhum dos arquivos locais nem causará conflitos. Localmente, há duas entidades distintas:
- O diretório de trabalho atual
- O repositório local
Nossas alterações e confirmações atuais estão localizadas no diretório de trabalho atual. Esses são os arquivos que vemos quando abrimos o diretório do repositório em nosso computador. Eles não são atualizados com o git fetch. Somente o repositório local é atualizado, o que pode ser considerado como uma cópia oculta do repositório remoto em nosso computador local.
Verificação de uma ramificação remota
Com uma cópia atualizada do repositório remoto, agora podemos criar uma cópia local de uma ramificação remota usando o comando git checkout
:
git checkout -b <branch_name> origin/<branch_name>
Substitua pelo nome da filial remota desejada. O primeiro parâmetro após
-b
é o nome que você deseja que a filial local tenha. Convencionalmente, usamos o mesmo nome para ambos, mas podemos usar qualquer outro nome, desde que nenhuma outra filial local tenha esse nome:
git checkout -b <local_branch_name> origin/<branch_name>
Após a execução bem-sucedida desse comando, o Git mudará o diretório de trabalho atual para esse ramo e estaremos prontos para começar a trabalhar nele.
git checkout
vs git switch
O comando git checkout
existe desde o início do Git. Seu escopo vai além da criação de cópias locais de ramificações ou da mudança de uma ramificação para outra. Por exemplo, ele pode obter arquivos específicos do repositório remoto.
Nas versões recentes do Git, foi criado o comando git switch
, cuja única finalidade é criar cópias locais de ramificações remotas e alternar entre ramificações locais.
Recomendo que você use git switch
em vez de git checkout
porque os recursos estendidos de git checkout
podem, às vezes, levar a erros.
Para saber como executar as mesmas ações que aprendemos neste artigo usando git switch
, você pode ler este tutorial: Git Switch Branch: Um guia com exemplos práticos.
Conclusão
Criar uma cópia local de uma ramificação remota do Git é muito importante para a colaboração. Usando git fetch
e git checkout
, podemos atualizar nosso repositório local com alterações remotas e mudar para o ramo desejado.
Embora o clássico git checkout
ofereça uma funcionalidade robusta, o novo comando git switch
oferece uma alternativa simplificada especificamente para o gerenciamento de filiais, reduzindo o risco de erros.
Perguntas frequentes
Recebo um erro: "por favor, confirme suas alterações ou armazene-as antes de mudar de ramo". Como faço para consertar isso?
O Git nos impede de mudar para outro ramo se o ramo atual tiver alterações não confirmadas. Para resolver esse problema, você precisa armazenar as alterações atuais ou confirmá-las.
Para confirmá-los, usamos o seguinte comando:
git commit -m "Commit message"
Como alternativa, se quisermos preservar as alterações sem confirmá-las ainda, podemos usar o comando git stash
para salvar temporariamente nosso trabalho:
git stash
Posteriormente, podemos reaplicá-las depois de retornar ao ramo original e usar o comando git stash pop
.
E se a filial remota tiver o mesmo nome de uma filial local?
Os nomes das ramificações devem ser exclusivos no Git. Se você receber um erro dizendo que a ramificação já existe, isso significa que há uma ramificação local com o mesmo nome. Isso pode significar duas coisas:
- Já verificamos essa filial anteriormente. Nesse caso, podemos alternar diretamente para ele sem buscar usando o comando
git checkout
. Observe que eliminamos o parâmetro-b
, que é usado para indicar que queremos criar uma nova ramificação. Como a ramificação já existe, não precisamos recriá-la. - Em algum momento, criamos uma ramificação diferente que, por acaso, tem o mesmo. Podemos resolver isso usando um nome de filial diferente com
git checkout -b origin/
.
Posso fazer alterações diretamente em uma ramificação remota?
Não, as alterações em uma ramificação do Git são feitas primeiro criando uma cópia local de uma ramificação, conforme aprendemos acima, e depois criando commits que representam as alterações que desejamos.
Como faço para atualizar minha ramificação local com as alterações remotas mais recentes?
Para atualizar nosso ramo local com as alterações mais recentes do ramo remoto correspondente, normalmente usamos o comando git pull
:
git pull origin
Isso executa um git fetch
e um git merge
para atualizar nosso ramo local. Descobrimos que o git fetch
atualizou o repositório local com a versão remota mais recente. O comando git merge
mescla essas alterações em nosso ramo local. Para obter mais detalhes, consulte este tutorial de push e pull do Git.
Recebo um erro: "branch remoto não encontrado". Como faço para consertar isso?
Esse erro indica que a ramificação não existe em nossa cópia local do repositório. Portanto, você também pode:
- O ramo não existe, o que pode indicar um erro de digitação no nome do ramo ou que se trata de um ramo antigo que já foi excluído.
- O repositório local não está atualizado. Como aprendemos acima, podemos atualizá-lo usando
git fetch
.