Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desvendando: o Git Boas Práticas e Armadilhas

Desvendando: o Git Boas Práticas e Armadilhas

Após anos trabalhando com o Git no meu cotidiano como Engenheiro de Software, pude vivenciar de perto os benefícios que essa poderosa ferramenta traz para o desenvolvimento de projetos, principalmente os colaborativos.

Ao longo da minha jornada, tive a oportunidade de aprender com os acertos e também com os desafios que surgiram. Esse conhecimento me inspirou a compartilhar minhas experiências e boas práticas em uma palestra focada em como aproveitar ao máximo o Git e evitar as armadilhas mais comuns.

Ícaro Jerry

July 29, 2023
Tweet

More Decks by Ícaro Jerry

Other Decks in Technology

Transcript

  1. $ whoami • Graduado em ADS pelo IFBA • Entusiasta

    do Linux e tecnologias livres • Curioso e contador de histórias • Salvo pelo Git +vezes do que pude contar
  2. Minha trajetória com o Git 1 Comecei o curso de

    ADS em 31 de outubro de 2012 Meu primeiro contato com o Git e Github em 6 de novembro 2014 3 Detalhe que meu primeiro commit não foi um commit “ideal“ 4 Primeiro commit três dias depois, em 9 de novembro de 2014. Isso ocorreu devido a minha participação no Hackathon Gênero e Cidadania da Câmara dos Deputados 2 Primeiro estágio, enquanto iniciava o segundo semestre da faculdade (2013). Usávamos o Controle de Versão do Team Foundation da Microsoft Vale ressaltar que basicamente eu só sabia 5 comandos: status, diff, add, pull, push Depois disso o Git me acompanhou em toda trajetória como desenvolvedor. Apesar disso, nessa jornada eu trabalhei com outros sistemas de controle de versão como o SVN e o CVS
  3. Fonte: roadmap.sh/frontend Frontend Developer Guia passo a passo para se

    tornar um desenvolvedor front-end moderno em 2023
  4. Fonte: roadmap.sh/backend Backend Developer Guia passo a passo para se

    tornar um desenvolvedor de back-end moderno em 2023
  5. Um commit no Git é uma operação que registra uma

    ou mais alterações nos arquivos de um repositório É como um instantâneo do estado atual dos arquivos, permitindo que você acompanhe o histórico de alterações ao longo do tempo O que são commits?
  6. Exemplo de um mau Commit Exemplo de um bom Commit

    Refatorar função de validação de e-mail A função de validação de e-mail estava realizando múltiplas tarefas, tornando o código complexo e difícil de entender. - Renomeada a função de `validarEmail` para `validarFormatoEmail`. - Removida a verificação de existência do e-mail no banco de dados para uma função separada. - Atualizados os comentários e a documentação da função. Closes #123 Correção de bug
  7. • Commits Grandes • Commits Não Descritivos • Commits Código

    Quebrado ou Incompleto • Commits Com Alterações Desnecessárias • Commits Desnecessários e/ou Arquivos Indevidos (configurações locais, binários, auto-gerados, sensíveis, etc) • Enviar os Commits Logo Após Realiza-lós • Branches Com Longo Tempo de Vida Principais Armadilhas
  8. • Realizar Commits Pequenos e Coeso (commit atômico) • Realizar

    Commits com Frequência • Executar os Testes Antes do Commit • Adotar Um Padrão de Mensagens de Commits (Conventional Commits) • Configurar Um Bom .gitignore • Usar e abusar do git stash • Atualizar as Branches Com Frequência • Utilizar Git Hooks Para Verificação do Código (pre-commit) Boas Práticas
  9. Conventional Commits Commits Semânticos <tipo>[escopo opcional]: <descrição> [corpo opcional] [rodapé(s)

    opcional(is)] Se refere ao tipo de alteração ou iteração que está sendo feita. Pode ser: test, feat, refactor, style, fix, ci, docs, entre outras Aqui deve ser descrito, de maneira clara, sucinta e simplificada, o que foi realizado no commit Contexto ao qual está relacionado a alteração. Em monorepos ou projetos com várias mudanças paralelas pode não ficar claro onde a mudança irá afetar Apesar de opcionais, detalhes adicionais sobre as alterações feitas no código são sempre bem-vindas, especialmente quando as alterações são complexas ou precisam de contexto adicional Aqui pode ser usado para fornecer informações adicionais relacionadas às alterações feitas no código, tais como números de ticket de suporte, links para relatórios de bugs ou outros recursos relacionados
  10. Vantagens extras em usar os Commits Semânticos Automatizar a criação

    de CHANGELOGs Automatizar disparo de processos como o de build e/ou deploy Gerar métricas sobre esforços aplicados ao projeto em refatoração de código, criação de features, mudança de estilos, ambiente de desenvolvimento, entre outros Facilitar a contribuição de outras pessoas em seus projetos, permitindo que eles explorem um histórico de commits melhor estruturado.
  11. Vantagens de um repositório bem configurado Facilidade de Colaboração: Um

    repositório Git bem estruturado e padronizado facilita a colaboração entre os membros da equipe. Todos estarão familiarizados com a estrutura do repositório e a forma de trabalhar, o que torna mais fácil compartilhar código e revisar as alterações feitas por outros desenvolvedores. Histórico de Alterações Claro: Commits bem escritos e atômicos, juntamente com uma estrutura organizada de branches, resultam em um histórico de alterações claro e compreensível. Isso ajuda a entender facilmente a evolução do projeto ao longo do tempo e a identificar a origem de problemas ou bugs. Facilidade de Navegação: A utilização adequada de branches e tags torna mais fácil navegar pelo repositório e localizar versões específicas do código. Isso é essencial para a manutenção do projeto e para criar ramificações de versões estáveis.
  12. Vantagens de um repositório bem configurado Melhor Rastreamento de Erros:

    Um repositório bem organizado facilita a identificação e correção de bugs. Quando o histórico de alterações é claro e as mudanças estão bem documentadas, é mais fácil rastrear a origem de problemas e identificar commits que possam ter causado o erro. Facilidade de Reversão e Desfazer Mudanças: A utilização adequada do Git permite reverter alterações indesejadas ou desfazer mudanças rapidamente. Isso é valioso quando se comete um erro ou quando uma funcionalidade precisa ser removida temporariamente.
  13. Vantagens de um repositório bem configurado Facilidade de Onboarding de

    Novos Membros: Quando o repositório segue padrões e boas práticas, é mais fácil para novos membros da equipe se integrarem e começarem a contribuir rapidamente, uma vez que eles podem entender facilmente a estrutura do projeto e as convenções adotadas. Melhor Gerenciamento de Conflitos: Um repositório bem organizado ajuda a reduzir a ocorrência de conflitos complexos. O uso de branches para trabalhar em recursos separados e mesclá-los posteriormente ajuda a minimizar problemas de integração.
  14. Conclusão Git é uma ferramenta poderosíssima, com diversos recursos e

    comandos disponíveis Possui uma comunidade ativa e bastante madura, com diversos materiais para estudos disponíveis Ao seguir as boas práticas e evitar as armadilhas que comentamos aqui, você contribuirá para um histórico de alterações claro e bem gerenciado, tornando o trabalho em equipe mais eficiente e facilitando a manutenção do projeto ao longo do tempo
  15. Material introdutório para o Git speakerdeck.com/icarojerry/desmistificando-o-git Site oficial do git

    git-scm.com Site oficial do Conventional Commits conventionalcommits.org Material para auxiliar estudos de Git em português gitfichas.com Site com a documentação do Github docs.github.com 2 1 3 Links relevantes 4 5
  16. Commit Early, Commit Often Perfect Later, Publish Once Commit Cedo,

    Commit Frequentemente Aperfeiçoe Depois, Publique Uma Vez