İçeriğe geç
🛠️ToolsShed

Git Commit Mesaj Oluşturucu

Tür, kapsam ve açıklamayla Conventional Commits formatında mesajlar oluşturur.

Bu araç hakkında

Git Commit Mesajı Oluşturucu, geliştiricilerin Conventional Commits spesifikasyonuna uygun açık ve standartlaştırılmış commit mesajları yazmasına yardımcı olur. Bu format, sürüm kontrol günlüklerini okunabilir kılar, otomatik sürüm yönetimi ve değişiklik günlüğü oluşturmayı sağlar ve proje genelinde tutarlı bir mesaj yapısı garantileyen ekip işbirliğini iyileştirir. Tek başına veya büyük bir ekipte çalışın, düzgün biçimlendirilmiş commit'ler bakım yapılabilirlik ve izlenebilirlik için gereklidir.

Aracı kullanmak için bir commit türü seçin (feat, fix, docs, style, refactor, test, chore veya perf), kod tabanının hangi bölümünün değiştiğini açıklamak için isteğe bağlı olarak bir kapsam ekleyin, değişikliğin kısa bir açıklamasını yazın ve isteğe bağlı olarak sorun referansları gibi daha fazla ayrıntı veya altbilgi bilgisi içeren bir gövde ekleyin. Araç, anında düzgün biçimlendirilmiş bir Conventional Commit mesajı oluşturur ve bunu doğrudan sürüm kontrol sisteminize kopyalayıp yapıştırabilitedir.

Geliştirici, DevOps mühendisleri ve açık kaynak maintainer'ları, anlamsal sürüm yönetimi otomasyonu ve profesyonel değişiklik günlüğü oluşturmaya imkan sağlayan Conventional Commits'i benimsemekten en fazla fayda sağlarlar. Bazı projeler özel commit stillerini tercih edebilse de, Conventional Commits formatı CI/CD araçları, GitHub Actions ve anlamsal yayın platformları tarafından yaygın olarak desteklenir ve modern yazılım iş akışları için idealdir.

Sıkça Sorulan Sorular

Kod Uygulaması

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