Realize facilmente o checkout de um ramo remoto no Git [Passo a passo]

Você é um recém-chegado a uma equipe e recebeu instruções para verificar um branch remoto no repositório de código do Git? Seja parte de uma grande empresa ou de uma equipe compacta, dominar os branches remotos do Git é fundamental para uma colaboração de código perfeita. Neste guia, aprofunde-se no processo de recuperar código de um repositório remoto do Git, focando no comando ‘git checkout remote branch’.

Not a reader? Explore this related video tutorial!

Not seeing the video? Ensure your ad blocker is disabled.

Pré-requisitos

  • Este tutorial utiliza a versão 2.30 do Git SCM (gerenciamento de código-fonte) no Windows 10, embora seja compatível com qualquer sistema operacional suportado pelo Git.

Outros métodos potenciais de instalação para o Windows incluem o Chocolatey e o Git4Win.

Entendendo um Branch Remoto

Repositórios do Git registram e acompanham uma sequência de commits relacionados dentro de um branch. Por padrão, um commit reside no branch atualmente ativo, geralmente denominado ‘main’ ou ‘master’.

A remote branch is a branch located in a remote Git repository. These remote repositories, termed as “remotes,” are the destinations your local Git repository will scout for external commit updates once set up.

Descubra as filiais disponíveis usando o comando branch do Git. A filial marcada com um asterisco (*) é a ativa. As filiais listadas abaixo são exclusivamente locais, pois ainda não foram buscadas filiais remotas.

git branch
List of local branches shown from the git branch command.

Dominando o Checkout Remoto do Git

Suponha que você tenha um repositório Git local e surja a necessidade de colaborar com outros desenvolvedores. É aqui que o comando Git checkout entra em jogo, permitindo que você obtenha os últimos commits de uma filial remota em um repositório Git remoto.

Uma vez configurada uma filial remota, o Git espelhará a filial remota em vez de uma filial apenas local. Abaixo está um exemplo do comando git checkout remote <branch>.

git checkout remote main

Clone o Repositório Git Remoto

Agora que um repositório existente está à sua disposição, é hora de mergulhar. Siga as etapas abaixo para clonar o repositório remoto para uma pasta local em sua máquina.

1. É geralmente mais simples clonar um repositório remoto via URL HTTPS em vez de SSH para evitar problemas de certificado e firewall.

  • Vá para o repositório no GitHub.
  • Clique no botão Code e selecione HTTPS.
  • Clique no ícone Clipboard ao lado do link para copiar a URL para a sua área de transferência.
Locating the HTTPS clone URL in GitHub.

2. Tendo copiado o URL HTTPS para a área de transferência, abra uma interface de linha de comando usando sua CLI preferida, como o Prompt de Comando do Windows ou o Windows Terminal.

3. Navegue até a pasta onde deseja que o repositório clonado resida. Para este tutorial, a pasta git no diretório principal é utilizada, conforme mostrado nas capturas de tela. Execute o seguinte comando para clonar o repositório, que cria uma subpasta contendo o repositório remoto.

# GitHub git clone https://github.com/Adam-the-Automator/git-checkout-remote-branch
Cloning a remote repository to the local machine.

4. Acesse o repositório clonado com o comando cd git-checkout-remote-branch.

Execute o seguinte comando de status para verificar se o repositório foi clonado com sucesso. O comando status do Git revela as diferenças entre o branch local e o branch remoto, auxiliando na determinação se seu branch está conectado e atualizado! O controle remoto Git padrão é denominado origin, prefixado ao branch remoto main. git status

git status
Checking a repositories status.

Para a maioria dos softwares Git modernos, main é o ramo principal padrão. Você pode encontrar uma aplicação mais antiga que usa master como nome padrão do ramo, mas ambos os nomes são funcionalmente iguais. Este tutorial utiliza ramos nomeados main, RemoteBranch, SomeBranch e AnotherBranch.

O que é um Git Remoto e Como Rastrear Ramos Remotos

Clonar um repositório cria automaticamente uma referência a uma fonte remota, conhecida como remoto. Essa referência é usada para verificar novos commits ou enviar novas alterações para o repositório remoto.

A Git repository itself may have multiple remotes, but a branch can only reference a single remote.

Rastrear um ramo remoto estabelece um relacionamento com um ramo local. Esse relacionamento permite que você envie ou puxe commits do ramo remoto para o ramo local sem esforço. Além disso, um ramo rastreado determina o quão à frente ou atrás em commits o ramo local está em relação ao remoto.

Listando os Remotos de um Repositório Git

Primeiramente, certifique-se de que o repositório com o qual está trabalhando possui algum remoto do Git. Para fazer isso, visualize os remotos do Git em seu repositório com o comando git remote como mostrado abaixo. Neste exemplo, dois remotos são exibidos, origin e remote2.

git remote
Viewing a repositories two configured remotes.

Dois repositórios remotos rastreados adicionais são nomeados origin e remote2, onde seus remotos podem ser diferentes.

Para obter mais detalhes sobre os remotos configurados, adicione a opção v para exibir o URI completo do remoto Git.

git remote -v
Viewing verbose details about repo remotes.

Você pode estar se perguntando por que os URI’s separados para fetch e push. Alguns fluxos de trabalho do Git permitem que você verifique as atualizações de um repositório em um URI diferente de onde você pode enviar alterações, isso é chamado de fluxo de trabalho triangular.

Visualização de Branches Remotos Disponíveis

Exiba todas as branches disponíveis, tanto locais quanto remotas, em seu repositório com o comando branch. Para mostrar também as branches remotas, adicione o parâmetro all, como exemplificado abaixo.

git branch --all

Na imagem abaixo, o repositório remoto origin usado neste tutorial é mostrado como esperado. No entanto, esta imagem omite todas as branches do remoto chamado Remote2.

Viewing all known branches in a repo (including remotes).

Se uma branch em seu remoto não estiver sendo exibida na lista de branches, você precisa atualizar sua lista de branches remotas disponíveis, como explicado na próxima seção.

Atualizando as Branches Remotas Disponíveis

Às vezes, um repositório remoto pode adicionar ou alterar branches. Para garantir que você esteja trabalhando com as branches mais atualizadas, é necessário executar o comando git fetch.

O comando fetch conecta-se ao repositório remoto, recuperando uma lista de todos os branches disponíveis. Visualize seus branches atualmente rastreados após executar o comando git fetch para ver que o branch remoto agora está visível, como demonstrado abaixo.

# Recupere os branches remotos disponíveis
git fetch

# Verifique que todos os branches estão agora disponíveis no repositório Git local
git branch --all

Abaixo, o branch remotes/origin/RemoteBranch agora está visível na lista de branches remotos disponíveis após executar o comando git fetch.

Using git fetch to update the list of available remote branches.

O comando fetch apenas verifica atualizações do remoto que está atualmente rastreado no branch presente. Para fazer o Git verificar atualizações de todos os remotos no repositório, independentemente do status de rastreamento, adicione o parâmetro all.

git fetch --all

Para buscar os branches disponíveis de um remoto específico, inclua o nome do remoto no comando git fetch, como Remote2 no exemplo abaixo, que recupera o branch main.

# Liste os branches disponíveis em um repositório Git local
git branch --all
# Recupere os branches disponíveis do remote2
git fetch Remote2
# Verifique que o branch remote2, main, está agora disponível
git branch --all
Fetching main from remote2 with the git fetch command.

Ao verificar atualizações remotas com git fetch, git pull ou git push, o Git compara commits com o ramo remoto. Os ramos locais podem rastrear qualquer ramo remoto do Git. Além disso, vários ramos locais podem ser configurados para rastrear o mesmo ramo remoto.

Visualizando o Rastreamento Remoto de Cada Ramo

Para ver o ramo remoto rastreado ao lado do respectivo ramo local, utilize o parâmetro vv com o comando git branch. Os resultados do comando exibem uma lista de remotos e ramos no formato [<remoto>/<branco>] conforme ilustrado abaixo.

git branch -vv
Listing remote tracking of all local branches.

Alterando o Rastreamento Remoto de um Ramo

Pode haver a necessidade de alterar seu ramo local para rastrear um ramo remoto diferente. Para definir seu ramo atual para um ramo remoto específico, utilize o parâmetro u, conforme ilustrado abaixo.

git branch -u Remote2/main
Setting what remote to track for the current branch.

Verificando Ramos Remotos do Git

Com novos ramos criados no repositório Git remoto, você pode precisar realizar uma operação de git checkout remote branch. O checkout de um ramo de repositório remoto é executado através do comando checkout.

Se as seguintes condições forem satisfeitas, o Git determinará autonomamente o controle remoto correto, fará o download de uma cópia local do branch remoto e definirá a cópia local para rastrear o branch remoto. Verifique se as seguintes condições não são atendidas por meio dos resultados do comando git branch --all.

  • A local branch with the same name does not already exist.
  • Não existem múltiplos remotos que usem o mesmo nome de branch remoto.

Para realizar a operação de checkout de um branch remoto, use o comando git checkout e digite o nome do branch remoto conforme visto abaixo.

git checkout RemoteBranch
Creating a local branch from a remote branch with git checkout.

Se o seu repositório local já contiver um branch local com o mesmo nome, adicione o parâmetro b para especificar um nome de branch local alternativo antes do branch remoto a ser verificado.

git checkout -b AnotherBranch origin/RemoteBranch
Creating a local copy of a remote branch with an alternate local branch name.

Se o seu repositório local tiver vários remotos com o mesmo nome de branch, especifique qual remoto e branch rastrear os commits locais.

git checkout --track origin/RemoteBranch
Creating a local copy of a remote branch with tracking enabled.

Versões futuras do Git possivelmente preferirão que você use o comando git switch para mudar e criar branches. O comando switch do Git é apenas para branches, enquanto o comando de checkout do Git tem muitas habilidades. Irshad S. escreveu um bom guia sobre a razão se você quiser ler mais sobre isso.

Empurrando um Branch Local para um Remoto

Ao criar um ramo local sem um ramo remoto correspondente para rastreamento, você pode enviar o ramo para o remoto usando o comando git push. O método mais direto para estabelecer um novo ramo no seu remoto preferido é usando o parâmetro u.

O parâmetro u, como utilizado anteriormente, exige os argumentos do nome do repositório e do ramo de origem. Ao especificar apenas HEAD como o nome do ramo de origem, o Git entende para usar o nome atual do ramo local como o nome no remoto, neste caso, NewBranch.

# Verificar e mudar para o NewBranch
git checkout -b NewBranch
# Criar o NewBranch no remoto origin
git push -u origin HEAD
# Verificar se os ramos no remoto agora existem
git branch -vv
Pushing a local branch to an upstream remote named origin with the same name as local.

HEAD é um atalho que significa simplesmente o ramo atual. Você pode enviar outros ramos para o remoto e estabelecer rastreamento usando seus nomes em vez de HEAD.

Às vezes, o nome do ramo local atual não corresponde ao nome do ramo remoto. Para usar um nome diferente, especifique o nome desejado do ramo após a origem, separado por dois pontos, como demonstrado abaixo.

# Criar o ramo atual no remoto origin como AnotherBranch
git push -u origin HEAD:AnotherBranch
# Verificar se o NewBranch local agora existe como AnotherBranch no remoto origin
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

Próximos Passos e Recursos Adicionais do Git

Após revisar os fundamentos do Git, gerenciar remotos e executar git checkout remote branch, você agora está equipado com uma riqueza de conhecimento que ajudará a evitar frustrações futuras. Os passos para fazer checkout de um branch remoto no Git e as melhores práticas compartilhadas servirão como recursos inestimáveis daqui para frente.

Se você deseja se aprofundar em outros aspectos do gerenciamento de um repositório Git, os seguintes recursos são altamente recomendados:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Git switch: Um comando dedicado ao tratamento de branches, ao contrário do multifacetado checkout do Git.

Source:
https://adamtheautomator.com/git-checkout-remote-branch/