Qual é a diferença entre um 'branch' e uma 'tag'?

Um branch e uma tag são conceitos importantes na gestão de versionamento de código em sistemas de controle de versão, como o Git.

Um branch é uma ramificação do código-fonte principal. Ele permite que várias pessoas trabalhem em diferentes funcionalidades ou correções de bugs simultaneamente, sem afetar diretamente o código principal. Cada branch tem um nome e pode conter alterações únicas. Por exemplo, você pode ter um branch chamado “feature-login” para desenvolver a funcionalidade de login do sistema e outro branch chamado “bugfix-logout” para corrigir um erro no logout. Após concluir as alterações em um branch, você pode mesclá-lo de volta ao branch principal, geralmente chamado de “master” ou “main”.

Uma tag, por outro lado, é usada para marcar um ponto específico na história do código. Ela representa uma versão estável e concreta do código em um determinado momento. As tags são normalmente usadas para marcar lançamentos de software, como as versões 1.0, 1.1, etc. Elas são úteis para referenciar um estado do código em particular que pode ser verificado novamente no futuro. Por exemplo, se você lançar a versão 1.0 do seu aplicativo e, posteriormente, desenvolver a funcionalidade 2.0, você pode criar uma tag para a versão 1.0 e usar essa tag para fazer referência ao código do lançamento original sem sofrer qualquer alteração futura.

Em resumo, um branch é uma ramificação do código-fonte que permite a colaboração em desenvolvimento, enquanto uma tag marca um estado específico do código em um determinado ponto no tempo, normalmente usado para referenciar lançamentos de software.