Vai al contenuto
🛠️ToolsShed

Generatore di Messaggi Git Commit

Genera messaggi in formato Conventional Commits con tipo, ambito e descrizione.

Informazioni sullo strumento

Il Generatore di Messaggi di Commit Git aiuta gli sviluppatori a scrivere messaggi chiari e standardizzati secondo la specifica dei Conventional Commits. Questo formato rende i registri di controllo versione leggibili, consente la generazione automatica di versioni e changelog, e migliora la collaborazione di team garantendo una struttura coerente di messaggi in tutto il progetto. Che tu lavori da solo o in un grande team, i messaggi di commit ben formattati sono essenziali per la manutenibilità e la tracciabilità.

Per utilizzare lo strumento, seleziona un tipo di commit (feat, fix, docs, style, refactor, test, chore o perf), aggiungi facoltativamente uno scope per chiarire quale parte della base di codice è cambiata, scrivi una descrizione concisa della modifica e includi opzionalmente un corpo con maggiori dettagli o informazioni di piè di pagina, come riferimenti a problemi. Lo strumento genera istantaneamente un messaggio Conventional Commit correttamente formattato che puoi copiare e incollare direttamente nel tuo sistema di controllo versione.

Sviluppatori, ingegneri DevOps e manutentori di progetti open source traggono il massimo vantaggio dall'adozione dei Conventional Commits, poiché abilitano l'automazione del versionamento semantico e la generazione professionale di changelog. Sebbene alcuni progetti possano preferire stili di commit personalizzati, il formato Conventional Commits è ampiamente supportato da strumenti CI/CD, GitHub Actions e piattaforme di rilascio semantico, rendendolo ideale per flussi di lavoro software moderni.

Domande Frequenti

Implementazione del Codice

# 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.