Conceitos Básicos de Versionamento
Versionamento de Código
Versionamento é um conceito muito simples e usado no dia a dia de forma que nem percebemos. Por exemplo: Estamos em um projeto onde temos dois desenvolvedores:
Stifler
Jim
Esses dois desenvolvedores estão fazendo o "Milfs Go" uma especie revolucionaria e inovadora, além do tempo sendo um app para acharem a "milfs".
Controle de Versão
Versionamento é o ato de manipular versões, agora o Controle de Versão é um sistema que vai registrar as mudanças tanto num arquivo como em um projeto gigante ao longo do tempo.
Tipos de Controle de Versão
Local
Mantém as versões apenas na sua máquina
Simples mas limitado
Exemplo: copiar e renomear arquivos
Centralizado
Um servidor central guarda todas as versões
Todos se conectam a este servidor
Exemplo: SVN
Distribuído
Cada desenvolvedor tem uma cópia completa
Trabalho offline possível
Exemplo: Git
Importância
Talvez agora você levante uma questão de o porque aprender "este trem" - como diria um amigo mineiro. Logo, a resposta é simples: esse tipo de ferramenta é essencial para o desenvolvimento já que nos entrega um poder de não somente trabalhar em conjunto de forma assíncrona e sem medo de acabar perdendo o que já foi feito.
Benefícios do Controle de Versão
Histórico Completo
Rastreamento de todas as mudanças
Quem fez o quê e quando
Possibilidade de reverter alterações
Trabalho em Equipe
Múltiplos desenvolvedores
Desenvolvimento paralelo
Resolução de conflitos
Backup
Cópia segura do código
Recuperação de desastres
Múltiplas cópias distribuídas
Fluxo Básico
Modificação
Alteração nos arquivos
Criação de novos arquivos
Exclusão de arquivos
Stage
Preparação das mudanças
Seleção do que será versionado
Organização das alterações
Commit
Confirmação das mudanças
Criação do ponto de versão
Registro no histórico
Boas Práticas
Commits Frequentes
Mudanças pequenas e focadas
Mais fácil de entender e reverter
Melhor rastreabilidade
Mensagens Claras
Descreva o que foi alterado
Seja conciso mas informativo
Use tempo verbal consistente
Branches Organizados
Separe features em branches
Mantenha o main/master estável
Merge apenas código testado
Próximos Passos
Agora que você entende os conceitos básicos, está pronto para:
Aprender comandos específicos do Git
Entender branches e merges
Trabalhar com repositórios remotos