Zum Inhalt springen
🛠️ToolsShed

Git Commit-Nachrichten-Generator

Erzeugt Conventional-Commits-formatierte Nachrichten mit Typ, Geltungsbereich und Beschreibung.

Über dieses Tool

Der Git-Commit-Nachricht-Generator hilft Entwicklern, klare und standardisierte Commit-Nachrichten gemäß der Conventional Commits-Spezifikation zu schreiben. Dieses Format macht Versionskontroll-Protokolle lesbar, ermöglicht automatisierte Versionsverwaltung und Changelog-Generierung und verbessert die Teamzusammenarbeit durch eine konsistente Nachrichtenstruktur über das gesamte Projekt hinweg. Egal ob Sie allein oder im großen Team arbeiten, ordnungsgemäß formatierte Commits sind für Wartbarkeit und Nachverfolgbarkeit unverzichtbar.

Um das Tool zu verwenden, wählen Sie einen Commit-Typ (feat, fix, docs, style, refactor, test, chore oder perf), fügen Sie optional einen Bereich hinzu, um zu verdeutlichen, welcher Teil der Codebasis sich geändert hat, schreiben Sie eine prägnante Beschreibung der Änderung und optional einen Textkörper mit weiteren Details oder Fußzeileninformationen wie Problembezüge. Das Tool generiert sofort eine ordnungsgemäß formatierte Conventional Commit-Nachricht, die Sie direkt in Ihr Versionskontrollsystem kopieren und einfügen können.

Entwickler, DevOps-Ingenieure und Open-Source-Betreuer profitieren am meisten von der Übernahme von Conventional Commits, da diese semantische Versionsverwaltungsautomatisierung und professionelle Changelog-Generierung ermöglichen. Obwohl einige Projekte möglicherweise benutzerdefinierte Commit-Stile bevorzugen, wird das Conventional Commits-Format von CI/CD-Tools, GitHub Actions und semantischen Release-Plattformen weit verbreitet unterstützt und ist daher ideal für moderne Software-Workflows.

Häufig gestellte Fragen

Code-Implementierung

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