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

Você é um novato em uma equipe e foi instruído a fazer checkout de uma branch remota do repositório de código Git? Seja parte de uma grande empresa ou de uma equipe compacta, dominar as branches remotas do Git é fundamental para uma colaboração de código sem emendas. Neste guia, mergulhe no processo de recuperação de código de um repositório Git remoto, 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

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

Entendendo uma Branch Remota

Os repositórios Git cronometram e rastreiam uma sequência de commits relacionados dentro de uma branch. Por padrão, um commit reside na branch ativa atualmente, geralmente denominada 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 os ramos disponíveis usando o comando branch do Git. O ramo marcado com um asterisco (*) é o ativo. Os ramos listados abaixo são exclusivamente locais, já que nenhum ramo remoto foi buscado ainda.

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

Domine o Checkout Remoto do Git

Suponha que você tenha um repositório Git local e a necessidade de colaborar com outros desenvolvedores. É aqui que o comando Git checkout entra em ação, permitindo que você busque os commits mais recentes de um ramo remoto em um repositório Git remoto.

Uma vez que um ramo remoto é configurado, o Git espelhará o ramo remoto em vez de um ramo 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 com certificados e firewall.

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

2. Tendo copiado o URL HTTPS para a sua área de transferência, abra uma interface de linha de comando usando o seu CLI preferido, como o Windows Command Prompt 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 Git status 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 é chamado de origin, prefixado ao branch remoto main. git status

git status
Checking a repositories status.

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

O que é um Remoto Git 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ê empurre 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 você está trabalhando tenha quaisquer remotos Git. Para fazer isso, visualize os remotos Git em seu repositório com o comando git remote conforme 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 o interruptor v para exibir o URI completo do remoto do Git.

git remote -v
Viewing verbose details about repo remotes.

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

Visualizando os ramos remotos disponíveis

Exiba todos os ramos disponíveis, tanto locais quanto remotos, em seu repositório com o comando branch. Para mostrar também os ramos remotos, acrescente o interruptor all, como exemplificado abaixo.

git branch --all

Na imagem abaixo, o repositório remoto origin usado neste tutorial é mostrado como previsto. No entanto, esta imagem omite todos os ramos do remoto chamado Remote2.

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

Se um ramo em seu remoto não estiver sendo exibido na lista de ramos, você deve atualizar sua lista de ramos remotos disponíveis, conforme coberto na próxima seção.

Atualizando os Ramos Remotos Disponíveis

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

O comando fetch conecta-se ao repositório remoto, recuperando uma lista de todas as branches disponíveis. Visualize as branches atualmente rastreadas após executar o comando git fetch para ver que a branch remota agora está visível, conforme demonstrado abaixo.

# Recupera as branches remotas disponíveis
git fetch

# Verifica que todas as branches estão agora disponíveis no repositório Git local
git branch --all

Abaixo, a branch remotes/origin/RemoteBranch está agora visível na lista de branches remotas disponíveis após a execução do comando git fetch.

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

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

git fetch --all

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

# Lista as branches disponíveis em um repositório Git local
git branch --all
# Recupera as branches disponíveis do remote2
git fetch Remote2
# Verifica que a branch main do remote2 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 ramo local correspondente, 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 Ramificações Remotas do Git

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

Se as seguintes condições forem satisfeitas, o Git determinará autonomamente o repositório 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 através 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 do branch remoto git, 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 para fazer o checkout.

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 para rastrear commits locais.

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

As futuras versões do Git possivelmente preferirão que você use o comando git switch para mudar e criar branches. O comando Git switch é apenas para branches, enquanto o comando Git checkout possui muitas habilidades. Irshad S. escreveu um bom artigo introdutório 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 correspondente remoto para rastreamento, você pode impulsionar o ramo para o remoto usando o comando git push. O método mais direto para estabelecer um novo ramo no seu remoto preferido é empregar 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 do ramo local atual como o nome no remoto, neste caso, NewBranch.

# Confira e mude para o NewBranch
git checkout -b NewBranch
# Crie o NewBranch no remoto origin
git push -u origin HEAD
# Verifique 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 o rastreamento usando o nome deles 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, juntamente com dois pontos, como demonstrado abaixo.

# Crie o ramo atual no remoto como AnotherBranch
git push -u origin HEAD:AnotherBranch
# Verifique 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

Depois de revisar o essencial do Git, gerenciar remotos e realizar o git checkout remote branch, você agora está equipado com uma riqueza de conhecimento que ajudará a evitar frustrações futuras. Os passos para verificar um branch remoto no Git e as melhores práticas compartilhadas servirão como recursos inestimáveis para o futuro.

Se você desejar 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 lidar com branches, ao contrário do multifacetado Git checkout.

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