Artigo original: Git Checkout Remote Branch Tutorial

O Git é uma ferramenta de controle de versão que permitirá a você manter e visualizar versões diferentes de sua aplicação. Quando uma nova atualização quebrar sua aplicação, o Git permite a você reverter essas alterações para a versão anterior.

Além do versionamento, o Git permite que você trabalhe em vários ambientes ao mesmo tempo. Vários ambientes, nesse contexto, significa branches.

Por que você precisa de branches

Quando estiver trabalhando com o git, você terá um ambiente ou branch master (também chamada de main). Essa branch específica tem o código fonte que é implantado quando sua aplicação está pronta para a produção.

Quando quiser atualizar sua aplicação, você também pode adicionar mais commits (alterações) a esta branch. Para alterações menos significativas, isso pode não ser um grande problema, mas, para as alterações maiores, fazer isso não é o ideal. É por isso que existem as outras branches.

Para criar e usar uma nova branch, você usa os seguintes comandos no seu terminal no diretório do projeto:

# criar uma nova branch
git branch nome-da-branch
# mudar o ambiente para a nova branch
git checkout nome-da-branch

Nesta nova branch, você pode criar as novas alterações. Quando terminar, pode fazer o merge das alterações na branch master/main.

Outro benefício das branches é permitirem que diversos desenvolvedores trabalhem no mesmo projeto simultaneamente. Se tiver diversos desenvolvedores trabalhando na mesma branch master/main, isso pode acabar em desastre. Há muitas mudanças entre os códigos de cada um dos desenvolvedores. Isso geralmente resulta em conflitos de merge.

Com o Git, você pode saltar para outra branch (outro ambiente) e fazer alterações lá, enquanto o trabalho segue em outras branches.

O que significa git checkout remote branch?

Ao começar um projeto com o Git, você recebe dois ambientes: a branch master/main local (que existe em seu computador) e a branch master/main remota (que existe em uma plataforma com suporte para o Git, como o GitHub).

Você pode fazer o push das alterações da branch master/main local para a branch master/main remota e fazer o pull das alterações da branch remota.

Ao criar uma branch local, ela só existe em seu computador até que se faça o push dela no GitHub, onde ela se torna uma branch remota. Mostramos isso no exemplo abaixo:

# criar uma nova branch
git branch nova-branch
# alterar o ambiente para a nova branch
git checkout nova-branch
# criar uma alteração
touch new-file.js
# fazer o commit da alteração
git add .
git commit -m "adicionar novo arquivo"
# fazer o push para uma nova branch
git push --set-upstream origin nova-branch

A partir do exemplo acima, origin nova-branch se torna a branch remota. Como você deve ter notado, criamos uma nova branch e fizemos o commit da alteração nela antes de fazer o push para a nova branch remota.

Mas e se a branch remota já existisse e quiséssemos fazer o pull da branch e de todas as suas alterações em nosso ambiente local?

É aqui que entra o "git checkout remote branch".

Como fazer o git checkout remote branch

Digamos que há uma branch remota criada por outro desenvolvedor e que você quer fazer o pull daquela branch. Aqui está o que você deve fazer:

1. Faça o fetch de todas as branches remotas

git fetch origin

Este comando faz o fetch de todas as branches remotas do repositório. origin é o nome remoto que você está buscando. Desse modo, se você tivesse, em vez disso, um nome remoto upstream, chamaria git fetch upstream.

2. Liste as branches disponíveis para o checkout

Para ver as branches disponíveis para checkout, execute o comando abaixo:

git branch -a

O resultado desse comando é a lista de branches disponíveis para checkout. Para ver as branches remotas, você as verá prefixadas com remotes/origin.

3. Faça o pull das alterações de uma branch remota

Observe que você não pode fazer alterações diretamente em uma branch remota. Assim, você precisa de uma cópia dessa branch. Digamos que você queira copiar a branch remota fix-failing-tests. Você faria isso dessa forma:

git checkout -b fix-failing-tests origin/fix-failing-tests

O que isso faz:

  • cria uma nova branch local chamada fix-failing-tests
  • faz o checkout daquela branch
  • faz o pull das alterações de origin/fix-failing-tests para aquela branch

Agora, você tem uma cópia daquela branch remota. Além disso, você pode fazer o push dos commits para aquela branch remota. Por exemplo, você faz o push de um novo commit assim:

touch new-file.js
git add .
git commit -m "adicionar novo arquivo"
git push

Isso fará o push das alterações colocadas em commit para origin/fix-failing-tests. Se você percebeu, não precisamos especificar onde estávamos fazendo o pushing das alterações (como em git push origin fix-failing-tests). Isso ocorre porque o git define automaticamente a branch local para que acompanhe a branch remota.

Conclusão

Criar branches no Git facilita a colaboração durante o desenvolvimento de uma aplicação.

Com branches, vários desenvolvedores podem trabalhar facilmente em partes diferentes daquela aplicação simultaneamente.

Com "checkout remote branch", a colaboração fica ainda mais fácil, pois os desenvolvedores podem copiar as branches remotas no local, em seus sistemas, fazer alterações e fazer o push para as branches remotas.