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:
-
Branches locais são as branches normais em que você trabalha.
-
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 logougit diffcontraorigin/mainpara 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 mainseguido degit 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-1efeature-2, o seu repositório local terá as branches de rastreamento remotoorigin/main,origin/feature-1eorigin/feature-2, mas só amainvai passar por checkout como branch local. -
Executar
git fetchatualiza 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 executandogit fetch --prune. O Git nunca descarta dados sem o seu consentimento explícito. -
Executar
git pullé o mesmo que executargit fetchseguido degit merge(ougit rebase), então esse comando também atualiza as branches de rastreamento remoto.
.gitignoregit checkoutgit configgit taggit worktree