Gerador de Mensagem de Commit Git
Gera mensagens no formato Conventional Commits com tipo, escopo e descrição.
Sobre esta ferramenta
O Gerador de Mensagens de Confirmação Git ajuda desenvolvedores a escrever mensagens claras e padronizadas seguindo a especificação do Conventional Commits. Este formato torna o registro de controle de versão legível, possibilita geração automática de versões e changelog, e melhora a colaboração da equipe ao garantir uma estrutura consistente em todo o projeto. Quer você trabalhe sozinho ou em um grande time, mensagens de confirmação bem formatadas são essenciais para manutenibilidade e rastreabilidade.
Para usar a ferramenta, selecione um tipo de confirmação (feat, fix, docs, style, refactor, test, chore ou perf), opcionalmente adicione um escopo para esclarecer qual parte da base de código foi alterada, escreva uma descrição concisa da mudança e opcionalmente inclua um corpo com mais detalhes ou informações de rodapé, como referências a problemas. A ferramenta gera instantaneamente uma mensagem de Conventional Commit adequadamente formatada que você pode copiar e colar diretamente em seu sistema de controle de versão.
Desenvolvedores, engenheiros de DevOps e mantenedores de código aberto se beneficiam mais ao adotar Conventional Commits, pois permitem automação de versionamento semântico e geração profissional de changelog. Embora alguns projetos possam preferir estilos de confirmação personalizados, o formato Conventional Commits é amplamente suportado por ferramentas de CI/CD, GitHub Actions e plataformas de lançamento semântico, tornando-o ideal para fluxos de trabalho de software modernos.
Perguntas Frequentes
Implementação de Código
# Generate Conventional Commit messages programmatically
# No external library needed — plain string formatting
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class CommitMessage:
type: str # feat | fix | docs | style | refactor | test | chore ...
description: str
scope: Optional[str] = None
body: Optional[str] = None
breaking_change: Optional[str] = None
footer: list[str] = field(default_factory=list)
def render(self) -> str:
# Header: type(scope)!: description
scope_str = f"({self.scope})" if self.scope else ""
bang = "!" if self.breaking_change else ""
header = f"{self.type}{scope_str}{bang}: {self.description}"
parts = [header]
if self.body:
parts.append("")
parts.append(self.body)
trailers = list(self.footer)
if self.breaking_change:
trailers.append(f"BREAKING CHANGE: {self.breaking_change}")
if trailers:
parts.append("")
parts.extend(trailers)
return "\n".join(parts)
# Example usage
msg = CommitMessage(
type="feat",
scope="auth",
description="add OAuth2 login support",
body="Implements Google and GitHub OAuth2 providers.\nUpdates the session schema.",
breaking_change="remove legacy /login endpoint",
footer=["Reviewed-by: Alice <alice@example.com>"],
)
print(msg.render())
# feat(auth)!: add OAuth2 login support
#
# Implements Google and GitHub OAuth2 providers.
# Updates the session schema.
#
# Reviewed-by: Alice <alice@example.com>
# BREAKING CHANGE: remove legacy /login endpointComments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.