Git na prática: workflows profissionais, rebase e resolução de conflitos

Introdução

Quando se trata de controle de versão, o Git é a ferramenta mais amplamente utilizada no mundo do desenvolvimento de software. No entanto, muitos desenvolvedores ainda subutilizam o Git, limitando-se a comandos básicos como git add, git commit e git push. Mas o Git é muito mais do que apenas commitar mudanças. Ele oferece uma ampla gama de recursos para gerenciar o fluxo de trabalho de forma eficiente, resolver conflitos e manter um histórico de mudanças limpo e organizado.

Git Flow vs Trunk-based

Dois dos workflows de Git mais populares são o Git Flow e o Trunk-based. O Git Flow é um workflow que utiliza branches separados para desenvolvimento, teste e produção, enquanto o Trunk-based utiliza um único branch principal para todos os estágios do desenvolvimento. Embora ambos os workflows tenham seus prós e contras, o Trunk-based é cada vez mais popular devido à sua simplicidade e eficiência.

Interactive Rebase para Histórico Limpo

Um dos recursos mais poderosos do Git é o interactive rebase. Ele permite que você reorganize e edite commits anteriores, criando um histórico de mudanças limpo e organizado. Com o interactive rebase, você pode squashar commits, reordená-los e até mesmo remover commits desnecessários. Isso é especialmente útil quando você está trabalhando em um projeto com muitos contribuidores e deseja manter um histórico de mudanças fácil de seguir.

Cherry-pick e Bisect

Outros dois recursos úteis do Git são o cherry-pick e o bisect. O cherry-pick permite que você aplique um commit específico em um branch diferente, enquanto o bisect é uma ferramenta de depuração que ajuda a encontrar o commit que introduziu um bug. Com o bisect, você pode rapidamente identificar o commit problemático e resolver o problema.

Resolução de Conflitos na Prática

Quando você está trabalhando em um projeto com muitos contribuidores, conflitos inevitavelmente surgem. No entanto, com o Git, você pode resolver conflitos de forma eficiente. Uma das maneiras de resolver conflitos é utilizar o git merge com a opção --no-commit. Isso permite que você resolva os conflitos manualmente antes de commitar as mudanças. Além disso, você pode utilizar ferramentas como o git diff e o git log para identificar as mudanças conflitantes e resolver o problema.

Git Hooks com Husky

Os git hooks são scripts que são executados automaticamente em diferentes estágios do fluxo de trabalho do Git. Com o Husky, você pode facilmente configurar git hooks para executar tarefas como testes automatizados, linting e formatação de código. Isso ajuda a garantir que o código seja de alta qualidade e segue as convenções de codificação do projeto.

Convenção de Commits

Uma convenção de commits bem definida é fundamental para manter um histórico de mudanças limpo e organizado. Uma das convenções mais populares é a convenção de commits do GitHub, que utiliza um formato de mensagem de commit específico para descrever as mudanças. Além disso, é importante utilizar tags e branches para organizar as mudanças e facilitar a navegação no histórico do projeto.

Conclusão

resumindo, o Git é uma ferramenta poderosa que oferece muitos recursos para gerenciar o fluxo de trabalho de forma eficiente. Com o interactive rebase, cherry-pick, bisect e resolução de conflitos, você pode manter um histórico de mudanças limpo e organizado. Além disso, com o Husky e a convenção de commits, você pode garantir que o código seja de alta qualidade e siga as convenções de codificação do projeto. Aqui estão alguns takeaways práticos:

  • Utilize o interactive rebase para manter um histórico de mudanças limpo e organizado
  • Utilize o cherry-pick e o bisect para aplicar mudanças específicas e resolver problemas
  • Resolva conflitos manualmente antes de commitar as mudanças
  • Utilize o Husky para configurar git hooks e garantir a qualidade do código
  • Siga uma convenção de commits bem definida para manter um histórico de mudanças limpo e organizado

Glossário do post

github
Plataforma de hospedagem de código fonte com controle de versão Git, usada para colaboração e deploy de projetos.
Ismael Douglas

Sobre o autor

Ismael Douglas

Desenvolvedor Full Stack apaixonado por construir produtos web rápidos e bem projetados. Escrevo sobre o que aprendo no caminho — código, infra e boas práticas.

Veja meus projetos no portfólio →