Pular para o conteúdo
🛠️ToolsShed

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 endpoint

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.