The Reference Reference

Como mencionado anteriormente, existem alguns tipos de referências, e todos elas apontam para commits no seu repositório. A única diferença entre elas é como e quando elas se movem. (Quando eu digo que uma referência se move, eu quero dizer que o ID do commit para o qual ela aponta é atualizado.)

Referências de branch locais são específicas de um único repositório: o seu repositório local. Comandos que afetam referências de branch local incluem commit, merge, rebase, e reset.

Referências de branch remotas também são específicas de um único repositório, mas de um que foi anteriormente definido como remoto. Comandos que afetam referências de branch remotas incluem fetch e push.

(O comando pull é um caso especial: ele combina fetch com ou um merge ou um rebase, dependendo de como você configurou o Git.)

Referências de tag são basicamente como referências de branch que nunca se movem. Depois que você cria uma tag, ela nunca vai mudar (a não ser que você explicitamente a altere usando a opção --force). Este comportamento as torna úteis para marcar versões específicas de um pacote de software, ou marcar exatamente o que foi publicado em um servidor de produção em uma data específica. No momento em que escrevo, eu sei de apenas um comando que afeta tags. Como você pode ter adivinhado, é tag.