Um commit gigante com a mensagem “várias mudanças” é uma dívida que você paga depois, geralmente às 2 da manhã procurando o que quebrou a produção.

Um commit, uma ideia

A regra é simples: cada commit deve representar uma mudança lógica completa. Se a mensagem precisa da palavra “e”, provavelmente são dois commits.

❌ corrige login e refatora header e atualiza deps
✅ fix: corrige redirecionamento após login
✅ refactor: extrai lógica do header para um hook
✅ chore: atualiza dependências

Por que importa

  • Revisão mais fácil: ninguém revisa bem um diff de 800 linhas. Mas um de 40, sim.
  • git bisect funciona: se cada commit é atômico e deixa o código funcionando, achar o que introduziu um bug leva minutos.
  • git revert cirúrgico: você desfaz uma mudança sem arrastar outras três.
  • Histórico legível: o log vira a narrativa de como o projeto cresceu.

A mensagem também conta

Use o imperativo e explique o porquê, não o quê (o diff já diz o que mudou):

fix: evita duplo submit no formulário de pagamento

O botão não era desabilitado durante a requisição, permitindo
cobranças duplicadas se o usuário clicasse duas vezes.

Commits pequenos não te atrasam. Eles economizam as horas que você perderia depurando às cegas.