Git Commit com Commits Convencionais
Visão Geral
Crie commits git padronizados e semânticos usando a especificação de Commits Convencionais. Analise o diff real para determinar o tipo, escopo e mensagem apropriados.
Formato do Commit Convencional
<tipo>[escopo opcional]: <descrição>
[corpo opcional]
[rodapé(s) opcional(is)]
Tipos de Commit
| Tipo | Propósito |
|---|---|
feat | Nova funcionalidade |
fix | Correção de bug |
docs | Apenas documentação |
style | Formatação/estilo (sem lógica) |
refactor | Refatoração de código (sem funcionalidade/correção) |
perf | Melhoria de desempenho |
test | Adicionar/atualizar testes |
build | Sistema de build/dependências |
ci | Mudanças em CI/config |
chore | Manutenção/miscelânea |
revert | Reverter commit |
Mudanças de Quebra (Breaking Changes)
# Ponto de exclamação após tipo/escopo
feat!: remover endpoint obsoleto
# Rodapé BREAKING CHANGE
feat: permitir config estender outras configs
BREAKING CHANGE: comportamento da chave `extends` alterado
Fluxo de Trabalho
1. Analisar Diff
# Se arquivos estão staged, use staged diff
git diff --staged
# Se nada está staged, use diff da árvore de trabalho
git diff
# Verifique também o status
git status --porcelain
2. Adicionar Arquivos ao Stage (se necessário)
Se nada está staged ou você deseja agrupar mudanças de forma diferente:
# Adicionar arquivos específicos
git add caminho/para/arquivo1 caminho/para/arquivo2
# Adicionar por padrão
git add *.test.*
git add src/components/*
# Stage interativo
git add -p
Nunca commite segredos (.env, credentials.json, chaves privadas).
3. Gerar Mensagem de Commit
As mensagens de commit DEVEM ser escritas estritamente e apenas em Inglês — tanto o assunto quanto o corpo. Nunca escreva uma mensagem de commit em Português, mesmo que o histórico do repositório contenha commits em Português.
Analise o diff para determinar:
- Tipo: Que tipo de mudança é esta?
- Escopo: Qual área/módulo é afetada?
- Descrição: Resumo de uma linha do que mudou (tempo presente, modo imperativo, <72 caracteres)
4. Executar Commit
# Linha única
git commit -m "<tipo>[escopo]: <descrição>"
# Multi-linha com corpo/rodapé
git commit -m "$(cat <<'EOF'
<tipo>[escopo]: <descrição>
<corpo opcional>
<rodapé opcional>
EOF
)"
Melhores Práticas
- Escreva mensagens de commit estritamente em Inglês apenas (assunto e corpo)
- Uma mudança lógica por commit
- Tempo presente: "add" não "added"
- Modo imperativo: "fix bug" não "fixes bug"
- Referencie issues:
Closes #123,Refs #456 - Mantenha descrição abaixo de 72 caracteres
Protocolo de Segurança Git
- NUNCA atualize a configuração do git
- NUNCA execute comandos destrutivos (--force, hard reset) sem solicitação explícita
- NUNCA pule hooks (--no-verify) a menos que o usuário peça
- NUNCA faça force push para main/master
- Se o commit falhar devido a hooks, corrija e crie NOVO commit (não altere)
- NUNCA crie uma nova branch sem perguntar explicitamente ao usuário primeiro.
Commite diretamente na branch atual (incluindo
main) a menos que o usuário tenha pedido uma branch. NÃO crie branch automática "por segurança" — o usuário gerencia branching. Se você acha que uma branch é justificada, PERGUNTE antes de criar uma. - NUNCA faça push para uma nova branch remota ou abra um MR/PR a menos que o usuário tenha pedido.