Generator Pesan Commit Git
Buat pesan berformat Conventional Commits dengan tipe, cakupan, dan deskripsi.
Tentang alat ini
Generator Pesan Commit Git membantu pengembang menulis pesan yang jelas dan terstandar mengikuti spesifikasi Conventional Commits. Format ini membuat log kontrol versi mudah dibaca, memungkinkan pembangkitan versi otomatis dan changelog, serta meningkatkan kolaborasi tim dengan menjamin struktur pesan yang konsisten di seluruh proyek. Baik Anda bekerja sendiri atau dalam tim besar, pesan commit yang diformat dengan baik sangat penting untuk kemudahan perawatan dan keterlacakan.
Untuk menggunakan alat ini, pilih tipe commit (feat, fix, docs, style, refactor, test, chore, atau perf), tambahkan cakupan opsional untuk memperjelas bagian mana dari basis kode yang berubah, tulis deskripsi singkat dari perubahan, dan secara opsional sertakan badan dengan detail lebih lanjut atau informasi catatan kaki seperti referensi masalah. Alat ini segera menghasilkan pesan Conventional Commit yang diformat dengan benar yang dapat Anda salin dan tempel langsung ke sistem kontrol versi Anda.
Pengembang, insinyur DevOps, dan pengelola proyek sumber terbuka mendapat manfaat paling besar dari mengadopsi Conventional Commits karena memungkinkan otomasi versionning semantik dan pembuatan changelog profesional. Meskipun beberapa proyek mungkin lebih suka gaya commit khusus, format Conventional Commits didukung secara luas oleh alat CI/CD, GitHub Actions, dan platform rilis semantik, menjadikannya ideal untuk alur kerja perangkat lunak modern.
Pertanyaan yang Sering Diajukan
Implementasi Kode
# 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.