Conceitos-chave

Branch de rastreamento remoto

  • Em inglês: remote-tracking branch

Se o seu repositório está conectado a um repositório remoto (por exemplo, origin), você normalmente vai ter dois conjuntos de branches:

  1. Branches locais são as branches normais em que você trabalha.

  2. Branches de rastreamento remoto são branches especiais, somente leitura, que refletem o estado das branches presentes no repositório remoto. Essas branches são nomeadas no formato <remote-name>/<branch-name> (ex.: origin/main).

Por que elas são úteis?

  • Para comparar branches locais com o remoto. Você pode usar comandos como git log ou git diff contra origin/main para ver o que mudou no remoto sem tocar no seu diretório de trabalho.

  • Para recuperar branches locais bagunçadas. Se a sua branch local sair dos trilhos, você pode resetá-la para o estado de uma branch de rastreamento remoto (ex.: git switch main seguido de git reset --hard origin/main).

  • Para criar novas branches. Precisa começar a trabalhar a partir de algo que só existe no remoto? Crie uma branch local a partir da branch de rastreamento remoto: git switch -c feature origin/feature.

De onde elas vêm?

  • Depois de clonar um repositório, todas as branches do repositório remoto são copiadas como branches de rastreamento remoto para o seu repositório local. Porém, só a branch padrão passa por checkout como uma branch local de verdade.

    Por exemplo, se o remoto tem as branches main, feature-1 e feature-2, o seu repositório local terá as branches de rastreamento remoto origin/main, origin/feature-1 e origin/feature-2, mas só a main vai passar por checkout como branch local.

  • Executar git fetch atualiza as branches de rastreamento remoto existentes no seu repositório e cria novas, caso branches novas tenham sido adicionadas ao remoto.

    Se uma branch foi excluída do remoto, a branch de rastreamento remoto correspondente vai continuar existindo localmente até você removê-la executando git fetch --prune. O Git nunca descarta dados sem o seu consentimento explícito.
  • Executar git pull é o mesmo que executar git fetch seguido de git merge (ou git rebase), então esse comando também atualiza as branches de rastreamento remoto.