Você saberia dizer qual a diferença conceitual e de usabilidade de TAG e BRANCH em Git?
Resposta curta:
- a tag – etiqueta em Inglês,é apenas uma marcação, em geral, dentro de um branch específico que define uma situação em um determinado momento.
- o branch – ramo em Inglês, tradicional é uma ramificação, ou organização experimental, em paralelo a outro(s) ramo(s) que potencialmente será incorporado ao desenvolvimento principal, ou melhor especificando, ao branch principal.
A tag costuma marcar um release – lançamento em Inglês, uma versão ou outro marco do projeto similar. Então a tag é apenas um apontador para um commit específico enquanto que um branch é um caminho, um galho de desenvolvimento.
A tag é apenas um nome que se dá para um estado do desenvolvimento. Desta forma torna-se fácil acessar aquele estado sempre que necessário.
No Git não há “custo” em definir uma tag, elas são uma marcação simbólica e não ocupam espaço no repositório. Você não altera o que está na tag. Ela será usada eventualmente, quando há algum evento importante no desenvolvimento que necessite desta marcação para voltar nela outras vezes. Normalmente este evento é um release.
O trabalho de desenvolvimento sempre é realizado em cima de branches através dos commits.
É no branch que se faz o merge – mesclagem, do estado / alterações anteriores com o que foi desenvolvido “agora”.
Um branch vai sendo acrescido de evoluções do desenvolvimento.
Uma bora prática é a criação de um novo branch, sempre que possível, quando uma nova linha de desenvolvimento vai ser iniciada.
A imagem a seguir mostra visualmente o histórico de um repositório Git com suas Tags e Branches:

Pode-se também definir um branch como uma ramificação da sua “árvore” principal de desenvolvimento, geralmente criado para se trabalhar no desenvolvimento de correções ou novas implementações.
Ao ser finalizado o trabalho para aquele contexto, podemos fazer um merge para a ramificação principal do seu projeto.
O branch fica com a responsabilidade de receber as modificações – commits, durante o contexto do desenvolvimento, a cada nova funcionalidade é aconselhável gerar novas branches. Quando o projeto já está maduro e estável é gerada uma nova release que será armazenada ou marcada por uma TAG do repositório.
Após compreender a diferença entre Tag e Branch no Git, mas se você não conhece os comandos básicos e diários de trabalho com o ele, como commit, add, clone; leia o seguinte post: Git Básico.
Se possui alguma dúvida ou necessita de ajuda com seu trabalho com Git, deixe um comentário.
Mantenha-se atualizado
Não esqueça de me seguir no Twitter e assinar o Canal Mazer.dev no Youtube para receber atualizações de novos artigos, vídeo aulas e cursos gratuitos em desenvolvimento e engenharia de software.