Como Verificar se um Branch Git foi Excluído no Remoto

GitBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um branch Git foi excluído em um repositório remoto. Abordaremos os passos essenciais para atualizar a visão do seu repositório local sobre o remoto, listar os branches remotos disponíveis e verificar sua existência usando diferentes comandos Git.

Você começará usando git fetch --prune para sincronizar seu repositório local com o remoto e remover quaisquer branches de rastreamento remoto desatualizados. Em seguida, você usará git branch -r para listar os branches de rastreamento remoto que agora são refletidos em seu repositório local. Finalmente, você aprenderá como usar git ls-remote para consultar diretamente o repositório remoto por um branch específico, fornecendo um método alternativo para verificação.

Execute git fetch --prune para Atualizar

Neste passo, aprenderemos como atualizar nosso repositório Git local com as últimas alterações de um repositório remoto. Imagine que você está trabalhando em um projeto com outras pessoas, e elas fizeram alterações e as enviaram para um servidor central. Você precisa de uma maneira de obter essas alterações em sua cópia local.

O comando que usamos para isso é git fetch. Este comando baixa commits, arquivos e refs de um repositório remoto para seu repositório local. É como obter as últimas atualizações do servidor sem realmente mesclá-las ao seu trabalho atual.

Também usaremos a opção --prune. Esta opção remove quaisquer branches de rastreamento remoto que não existam mais no remoto. Isso ajuda a manter sua lista de branches remotos limpa e atualizada.

Vamos supor que você tenha um repositório remoto configurado (abordaremos como adicionar remotos em um laboratório futuro). Por enquanto, simularemos a busca de um remoto.

Abra seu terminal, certifique-se de estar no diretório ~/project/my-time-machine e execute o seguinte comando:

cd ~/project/my-time-machine
git fetch --prune origin

Você pode ver uma saída semelhante a esta (a saída exata depende do repositório remoto):

From origin
 * [new branch]      feature/new-feature -> origin/feature/new-feature
 - [deleted]         (none)              -> origin/old-branch

Esta saída mostra que o Git buscou novos branches (feature/new-feature) e removeu branches que não existem mais no remoto (old-branch).

Executar git fetch --prune é uma boa prática para manter sua visão local do repositório remoto precisa. Ele permite que você veja quais alterações foram feitas por outros antes de decidir integrá-las ao seu próprio trabalho.

Verifique git branch -r para o Branch Remoto

No passo anterior, usamos git fetch --prune para atualizar nosso repositório local com informações do remoto. Agora, vamos ver quais branches remotos estão disponíveis em nosso repositório local após o fetch.

Podemos listar os branches de rastreamento remoto usando o comando git branch com a opção -r. Este comando mostra os branches que o Git buscou de repositórios remotos.

Certifique-se de ainda estar no diretório ~/project/my-time-machine e execute o seguinte comando:

cd ~/project/my-time-machine
git branch -r

Você deve ver uma lista de branches remotos, tipicamente prefixados com o nome do remoto (como origin) seguido pelo nome do branch. Por exemplo:

  origin/master
  origin/feature/new-feature

Esta saída informa sobre os branches que existem no repositório remoto (origin, neste caso) e sobre os quais seu Git local tem informações. Estes não são branches locais nos quais você pode trabalhar diretamente; eles são referências ao estado dos branches no remoto.

Entender os branches de rastreamento remoto é importante porque eles representam o estado do repositório remoto a partir do último git fetch ou git pull. Eles permitem que você veja o que está acontecendo no remoto sem afetar seus branches de trabalho locais.

Verificar com git ls-remote

No passo anterior, usamos git branch -r para ver os branches de rastreamento remoto em nosso repositório local. Outro comando útil para ver as referências em um repositório remoto é git ls-remote.

Ao contrário de git fetch, que baixa os objetos, git ls-remote simplesmente lista as referências (como branches e tags) em um repositório remoto sem buscá-las. Isso é útil para verificar rapidamente o que está disponível no remoto sem atualizar sua cópia local.

Certifique-se de estar no diretório ~/project/my-time-machine e execute o seguinte comando, especificando o nome do remoto (que normalmente é origin):

cd ~/project/my-time-machine
git ls-remote origin

Você deve ver uma saída semelhante a esta:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 HEAD
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 refs/heads/master
f0e1d2c3b4a59687765443210fedcba987654321 refs/heads/feature/new-feature

Esta saída mostra o hash do commit seguido pelo nome da referência. HEAD geralmente aponta para o branch padrão no remoto (frequentemente master ou main). refs/heads/ indica um branch, e refs/tags/ indicaria uma tag.

Comparar a saída de git branch -r e git ls-remote pode ajudá-lo a entender a diferença entre o que realmente está no remoto (git ls-remote) e o que seu repositório local sabe sobre o remoto após o último fetch (git branch -r).

Este comando é uma maneira rápida de espiar a estrutura do repositório remoto sem realizar uma operação de fetch completa.

Resumo

Neste laboratório, aprendemos como verificar se um branch Git foi excluído em um repositório remoto. O primeiro passo crucial é atualizar a visão do nosso repositório local sobre o remoto usando git fetch --prune. Este comando baixa as informações mais recentes do remoto e, o que é importante, remove quaisquer branches de rastreamento remoto locais que não existam mais no remoto, garantindo que nossa visão local seja precisa.

Após o fetch e o prune, podemos então usar comandos como git branch -r para listar os branches de rastreamento remoto que ainda estão presentes em nosso repositório local. Ao comparar a saída antes e depois do fetch, ou simplesmente observando os branches podados durante o fetch, podemos determinar se um branch específico foi excluído no remoto.